maven-2 - pom - maven tutorial
Repositorio Maven para el proyecto Google Code (4)
Estoy hospedando un pequeño proyecto de código abierto en Google Code, y me han pedido que envíe el archivo a un repositorio de Maven accesible al público. Casi no tengo conocimiento práctico de Maven. Cuál sería la mejor forma de hacer esto?
¿Hay algún repositorio central al que pueda enviar o puedo alojar el mío? ¿Qué tendría que hacer cuando quiero lanzar una nueva versión del jar?
He estado buscando en Google y encontré this , que parece agradable y simple, pero parece un poco ... contrariamente al espíritu de Maven, enviar archivos jar a SVN :).
Además, ¿habría una manera de seguir el seguimiento del recuento de descargas, como lo hace Google Code?
EDITAR
He estado recibiendo algunas respuestas, algunas de las cuales contienen sugerencias sobre qué agregar a mi pom.xml
. ¡Gracias chicos! Pero obviamente olvidé mencionar una cosa importante: mi script de compilación está en ANT, y para decirlo sin rodeos, tengo la intención de mantenerlo así :). Solo quiero que sea más fácil para los usuarios de Maven incluir mi tarro en sus proyectos.
La solución con la que fui al final.
Al final, utilicé la solución a la que hice this anteriormente, donde simplemente confío un repositorio de Maven a SVN. Tengo la secuencia de comandos ANT, llame a Maven para configurar el repositorio local, y luego llame a SVN para confirmar el código de Google. Para aquellos interesados: mire mi script de compilación here , en el objetivo de publish-maven
.
Compruebe si el repositorio de Maven admite el complemento de implementación de maven . Este sería el enfoque más fácil.
La mayoría de los repositorios usa ssh como el transporte. Vea this para más detalles.
Una vez que está configurado, todo lo que tienes que hacer es:
mvn deploy:deploy
Compruebe wagon-svn. Le permitirá ''desplegar'' a un repositorio de Subversion. Es un poco complicado, pero es mejor que nada. Conozco algunos proyectos que lo utilizan en java.net, y también encontré algunos proyectos que lo utilizaron en code.google.com.
Si quieres usarlo, primero necesitas cargar wagon-svn como una extensión:
<build>
...
<extensions>
<extension>
<groupId>org.jvnet.wagon-svn</groupId>
<artifactId>wagon-svn</artifactId>
<version>...</version>
</extension>
</extensions>
A continuación, debe establecer sus destinos de implementación utilizando el identificador de protocolo svn:. Aquí hay un ejemplo que copié de Internet.
<distributionManagement>
<repository>
<id>maven-config-processor-plugin-repo-releases</id>
<name>Maven Repository for Config Processor Plugin (releases)</name>
<url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/releases</url>
<uniqueVersion>false</uniqueVersion>
</repository>
<snapshotRepository>
<id>maven-config-processor-plugin-repo-releases</id>
<name>Maven Repository for Config Processor Plugin (snapshots)</name>
<url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/snapshots</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
Hay una guía para el repositorio central que tiene una sección sobre la carga de proyectos que puede ayudar. Si no puede hacer nada más, puede verificar las convenciones de nomenclatura y los requisitos mínimos de información en relación con su proyecto.
Sonatype también realiza el alojamiento del repositorio OSS, consulte su guía para obtener más información.
Actualización: no estoy diciendo que debas cambiar tu proceso de compilación, si Ant trabaja para ti, quédate. Vale la pena seguir las convenciones de Maven en tu POM, independientemente de tu método de construcción. Como el objetivo de colocar su tarro en un repositorio de Maven es hacerlo accesible a los usuarios de Maven, por lo tanto, deberá definir un POM para su artefacto publicado. Seguir las convenciones de nomenclatura ayudará a sus usuarios para que también pueda hacerlo. Por ejemplo, agregar los detalles de SCM al pom (entre otras cosas) permitirá a los usuarios importar el proyecto a su área de trabajo utilizando las integraciones IDE para Maven.
Básicamente, tienes 4 opciones:
- Realizar una compilación estándar de Maven contra un repositorio de Maven (ya descartado)
- Configure un repositorio de Maven, haga sus compilaciones con Ant y use Maven para desplegar el jar y el POM.
- Configure un repositorio de Maven, el anuncio usa una tarea HTTP Ant para publicar los artefactos
- Use un "repositorio" de Subversion y use la tarea SvnAnt para publicar los artefactos
Opción 1
Use Maven para construir y desplegar los artefactos (consulte el libro de Maven y los enlaces anteriores para obtener más detalles).
opcion 2
Suponiendo que tiene un proceso de compilación que crea su jar, y que ha definido el POM, lo mejor que puede hacer es publicarlo en el repositorio de Sonatype OSS como se indicó anteriormente.
La implementación de un archivo jar existente en un repositorio estándar de Maven es simple con el objetivo del archivo de implementación del complemento de implementación de Maven:
- Configure su repositorio (por ejemplo, en los servidores de Sonatype al elevar una solicitud Jira )
- Construye tu jarra con Ant.
- Si ha definido un POM, póngalo en el mismo directorio que el jar.
Ejecutar el objetivo de despliegue de archivos:
mvn deploy: deploy-file -Durl = http://path/to/your/repository / -DrepositoryId = some.id / -Dfile = path-to-your-artifact-jar / -DpomFile = path-to-your- pom.xml
Tenga en cuenta que el objetivo de implementación de Maven traducirá automáticamente el archivo pom.xml a [nombre-proyecto] - [versión] .pom. Si está haciendo alguna de las otras dos alternativas, deberá asegurarse de confirmar el POM con el nombre final, es decir, [nombre del proyecto] - [versión] .pom. También deberá asegurarse de componer las rutas relativas para los artefactos siguiendo las convenciones de Maven.
Por ejemplo, para groupId = com.foo.bar, artifactId = my-project version = 1.0.0, la ruta a los archivos será:
/com/foo/bar/my-project/my-project-1.0.0.jar
/com/foo/bar/my-project/my-project-1.0.0.pom
Opcion 3
Si desea usar Ant para implementar en un repositorio de Maven, puede usar una biblioteca HTTP de Ant (Tenga en cuenta que no lo he intentado yo mismo). Debería componer dos tareas de colocación HTTP, una para el jar y otra para el POM.
<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.pom">
<userCredentials username="user" password="password"/>
</httpput>
<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.jar">
<userCredentials username="user" password="password"/>
</httpput>
Opcion 4
Si desea evitar Maven por completo y usar Ant para implementarlo en un repositorio respaldado por SVN, puede usar la biblioteca SvnAnt Subversion . simplemente tendría que configurar la tarea de importación Svn para agregar sus artefactos al repositorio de Subversion remoto.
<import path ="/dir/containing/the/jar/and/pom"
url="svn://your/svn/repository"
message="release"/>
Puede enviar su jar a https://clojars.org/
En tu pom.xml
:
<repositories>
<repository>
<id>clojars.org</id>
<url>http://clojars.org/repo</url>
</repository>
</repositories>