2009-08-14 14 views
22

Estoy alojando un pequeño proyecto de código abierto en Google Code, y me han 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 forma de hacer esto?Repositorio de Maven para el proyecto Google Code

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

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

Además, ¿habría alguna forma de seguir el conteo de descargas, como hace Google Code?

EDITAR

He estado recibiendo algunas respuestas, algunas de las cuales contiene consejos sobre lo que debe añadir 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 que sea más fácil para los usuarios de Maven incluir mi jar en sus proyectos.


La solución Fui con el fin

Al final, hice uso de la solución que referenced antes, donde me comprometo simplemente un acuerdo de recompra Maven a SVN. Tengo la secuencia de comandos ANT llamada Maven para configurar el repositorio local y luego llamar a SVN para que se lo asigne a Google Code. Para aquellos interesados: mira mi secuencia de comandos de compilación here, en el objetivo publish-maven.

+0

Qué proyecto de código abierto es que por el camino? –

+0

@Bno, vea http://code.google.com/p/equalsverifier/ – jqno

+0

¡thx, se ve muy bien! –

Respuesta

24

Hay una guide to the central repository que tiene una sección sobre los proyectos de subir que pueden ayudar. Si nada más puede verificar las convenciones de nomenclatura y los requisitos mínimos de información en contra de su proyecto.

Sonatype también hace alojamiento de repositorio OSS, vea their guide para más detalles.

Actualización: No estoy diciendo que deba cambiar el proceso de compilación, si Ant funciona para que usted lo respete. Vale la pena seguir las convenciones de Maven en tu POM, independientemente de tu método de compilación. Como el objetivo de poner su jar en un repositorio de Maven es hacerlo accesible para los usuarios de Maven, por lo tanto, necesitará 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 los usuarios importar el proyecto en su espacio de trabajo utilizando las integraciones de IDE para Maven.

Básicamente, usted tiene 4 opciones:

  1. Realizar una Maven estándar de construcción contra un repositorio de Maven (ya descartado)
  2. prepara un repositorio Maven, hacer su obra con la hormiga, y el uso de Maven para implementar el jar y POM.
  3. Configurar un repositorio Maven, publicitarias de utilizar una tarea HTTP Ant para publicar los artefactos
  4. Use una subversión "repositorio", y utilizar la tarea SvnAnt publicar los artefactos

Opción 1

Utilice Maven para compilar e implementar los artefactos (consulte el Maven book y los enlaces anteriores para obtener más información).


Opción 2

Asumiendo que tiene un proceso de construcción que crea el frasco, y que ha definido el POM, lo mejor es publicar en el repositorio Sonatype OSS que el anterior.

implementación de un frasco existente a un repositorio estándar Maven es simple con el Maven desplegar objetivo implementar en archivos de plugin:

  1. Configurar el repositorio (por ejemplo en los servidores Sonatype elevando una Jira request) Construir
  2. tu jarra con Ant.
  3. Si ha definido un POM, colóquelo en el mismo directorio que el jar.
  4. Ejecutar el despliegue de archivos objetivo:

    mvn despliegue: desplegar-file = -Durl http://path/to/your/repository \ -DrepositoryId = some.id \ -dfile = ruta-a-su-artefacto-jar \ - DpomFile =-ruta-a-tu pom.xml

Tenga en cuenta que el objetivo desplegar Maven se traducirá automáticamente el pom.xml a [nombre-proyecto] - .pom [versión]. Si está haciendo alguna de las otras dos alternativas, tendrá que 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.

E.g. para groupId = com.foo.bar, artifactId = mi-proyecto version = 1.0.0, la ruta de 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 use Ant para implementar en un repositorio de Maven, puede usar un Ant HTTP library (tenga en cuenta que no he probado esto por mi cuenta). Debería componer dos tareas de 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> 

Opción 4

Si se quiere evitar por completo Maven y Ant utilizar para desplegar a un repositorio respaldado por SVN, se puede utilizar el SvnAnt Subversion library. simplemente necesitaría configurar la tarea Svn import para agregar sus artefactos al repositorio remoto de Subversion.

<import path ="/dir/containing/the/jar/and/pom" 
    url="svn://your/svn/repository" 
    message="release"/> 
+0

Gracias, esta publicación fue bastante útil. – javamonkey79

1

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

La mayoría de los repositorios utilizan ssh como medio de transporte. Ver this para más detalles.

Una vez que está configuración, todo lo que tiene que hacer es:

mvn deploy:deploy 
+0

¡Gracias! Parece interesante. Desafortunadamente, mi script de compilación está en ANT. ¿No creo que haya un complemento similar para ANT :)? – jqno

7

Comprobar wagon-svn. Le permitirá 'implementar' en un repositorio de Subversion. Es un poco intrincado, pero es mejor que nada. Conozco algunos proyectos que lo utilizan en java.net, y también encontré algunos proyectos que lo usan en code.google.com.

Si desea utilizarlo, entonces primero tiene que cargar vagones-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, es necesario establecer sus objetivos de despliegue utilizando la propiedad svn: identificador de protocolo. 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> 
+0

Entonces, eso automatizaría el proceso de implementación en SVN, siguiendo la publicación del blog que mencioné en mi pregunta, ¿no? Supongo que no hay algo como esto para ANT también :) – jqno

+0

Puede usar Maven con wagon-svn. No tiene que crear un proyecto de Maven completo, solo cree un Maven POM para implementarlo. Entonces no usas Maven para el sistema de compilación. Construya su JAR usando Ant, luego implemente usando 'mvn deploy: deploy-file' y el POM apropiado que configura wagon-svn y el" svn maven repository ". –

+0

La configuración anterior de wagon-svn no está completa, también necesita agregar el repositorio de java.net. Para obtener más información, consulte: https://wagon-svn.dev.java.net/ –

0

Puede enviar su frasco para https://clojars.org/

En su pom.xml:

<repositories> 
    <repository> 
    <id>clojars.org</id> 
    <url>http://clojars.org/repo</url> 
    </repository> 
</repositories> 
Cuestiones relacionadas