Repositorio Maven para el proyecto Google Code


Estoy alojando un pequeño proyecto de código abierto en Google Code, y se me ha pedido que envíe el jar a un repositorio Maven de acceso público. Casi no tengo conocimiento práctico de Maven. ¿Cuál sería la mejor manera de hacer esto?

¿Hay algún repositorio central al que pueda enviar, o puedo alojar el mío propio? ¿Qué debo hacer cuando quiero lanzar una nueva versión del jar?

He estado buscando en Google y encontré esto, que se ve bien y simple, pero parece un poco ... contrariamente al espíritu de Maven, para enviar archivos jar a SVN:).

Además, ¿habría una manera de seguir el recuento de descargas, como 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 de esa manera :). Solo quiero hacerlo más fácil para los usuarios de Maven para incluir mi tarro en sus proyectos.


La solución con la que fui al final

Al final, usé la solución I referenciada antes, donde simplemente confirmo un repositorio Maven a SVN. Tengo el script ANT llamar Maven para configurar el repositorio local, y luego llamar a SVN para confirmarlo en Google Code. Para aquellos interesados: mira mi script de compilación aquí, en el destino publish-maven.

Author: jqno, 2009-08-15

4 answers

Hay una guía para el repositorio central que tiene una sección sobre la carga de proyectos que pueden ayudar. Si nada más puede comprobar las convenciones de nomenclatura y los requisitos mínimos de información contra su proyecto.

Sonatype también hace el alojamiento de repositorios OSS, vea su guía para más detalles.

Actualización: No estoy diciendo que debas cambiar tu proceso de compilación - si Ant funciona para ti quédate con él. Vale la pena seguir las convenciones Maven en su POM independientemente de tu método de construcción. Como el objetivo de poner su jar en un repositorio 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 por lo que también podría hacerlo. Por ejemplo, agregar los detalles de SCM al pom (entre otras cosas) permitirá a sus usuarios importar el proyecto en su espacio de trabajo utilizando las integraciones IDE para Maven.

Básicamente, tienes 4 opciones:

  1. Realizar una compilación Maven estándar contra un repositorio Maven (ya descartado)
  2. Configure un repositorio Maven, haga sus compilaciones con Ant y use Maven para implementar el jar y el POM.
  3. Configure un repositorio Maven, ad use una tarea HTTP Ant para publicar los artefactos
  4. Use un "repositorio" de Subversion, y use la tarea SvnAnt para publicar los artefactos

Opción 1

Utilice Maven para construir e implementar los artefactos (ver el Maven book y los enlaces anteriores para más detalles).


Opción 2

Asumiendo que tiene un proceso de compilación que crea su jar, y que ha definido el POM, su mejor apuesta es publicarlo en el repositorio Sonatype OSS como se mencionó anteriormente.

Implementar un jar existente en un repositorio Maven estándar es simple con el objetivo deploy-file del complemento Maven deploy:

  1. Configure su repositorio (por ejemplo, en los servidores Sonatype levantando una Jira solicitud)
  2. Construye tu tarro con Ant.
  3. Si ha definido un POM, póngalo en el mismo directorio que el jar.
  4. Ejecute el objetivo deploy-file:

    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 Maven deploy traducirá automáticamente el pom.xml a [nombre del proyecto] - [versión].pom. Si está haciendo cualquiera 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 tendrá que 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

Opción 3

Si desea utilizar Ant para implementar en un repositorio Maven, puede usar una biblioteca HTTP Ant (Tenga en cuenta que no he probado esto yo mismo) . Compondría dos tareas HTTP put, 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>

Opción 4

Si desea evitar Maven completamente y usar Ant para implementar en un repositorio respaldado por SVN, puede usar la biblioteca Subversion SvnAnt. simplemente tendrá que configurar la tarea Svn import para agregar sus artefactos al Control remoto Repositorio Subversion.

<import path ="/dir/containing/the/jar/and/pom" 
    url="svn://your/svn/repository"
    message="release"/>
 24
Author: Rich Seller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-15 19:38:30

Compruebe wagon-svn. Le permitirá 'desplegar' a un repositorio de Subversion. Es un poco complicado, pero es mejor que nada. Sé de algunos proyectos que lo utilizan en java.net, y también me encontré con algunos proyectos que lo utilizan en code.google.com.

Si desea usarlo, primero debe 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>
 7
Author: Wilfred Springer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-15 07:30:38

Compruebe si el repositorio Maven soporta maven deploy plugin. Este sería el enfoque más fácil.

La mayoría de los repositorios usan ssh como transporte. Ver este para más detalles.

Una vez que está configurado, todo lo que tienes que hacer es:

  mvn deploy:deploy
 1
Author: ZZ Coder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-14 22:43:50

Puedes enviar tu jar a https://clojars.org /

En su pom.xml:

<repositories>
  <repository>
    <id>clojars.org</id>
    <url>http://clojars.org/repo</url>
  </repository>
</repositories>
 0
Author: minghan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-07 23:36:20