Référentiel Maven pour le projet de code Google
J'héberge un petit projet open source sur Google Code, et on m'a demandé de soumettre le jar à un référentiel Maven accessible au public. Je n'ai presque aucune connaissance pratique de Maven. Quelle serait la meilleure façon de le faire?
Y a-t-il un dépôt central auquel je peux me soumettre ou Puis-je héberger le mien? Que devrais-je faire quand je veux sortir une nouvelle version du pot?
J'ai googlé et trouvé Ce , qui a l'air agréable et simple, mais il semble un peu ... contrairement à L'esprit de Maven, de commettre des fichiers jar à SVN:).
En outre, y aurait-il un moyen de garder une trace du nombre de téléchargements, comme le fait Google Code?
Modifier
J'ai eu quelques réponses, dont certaines contenant des conseils sur ce qu'il faut ajouter à mon pom.xml
. Merci les gars! Mais, évidemment, j'ai oublié de mentionner une chose importante: mon script de construction est en ANT, et franchement, j'ai l'intention de garder de cette façon :). Je veux juste le rendre plus facile pour les utilisateurs de Maven pour inclure mon pot dans leurs projets.
la solution que je suis allé avec à la fin
À la fin, j'ai utilisé la solution que je référencée auparavant, où je commets simplement un repo Maven à SVN. J'ai le script ANT appeler Maven pour configurer le repo local, puis appeler SVN pour le valider dans le code Google. Pour ceux qui sont intéressés: regardez mon script de construction ici , dans la cible publish-maven
.
4 réponses
Il y a un guide du référentiel central qui a une section sur le téléchargement de projets qui peut aider. Si rien d'autre, vous pouvez vérifier les conventions de nommage et les exigences minimales en matière d'informations par rapport à votre projet.
Sonatype fait aussi de L'hébergement de référentiel OSS, voir leur guide pour plus de détails.
Update: Je ne dis pas que vous devriez changer votre processus de construction - si Ant fonctionne pour vous, restez avec lui. Cela vaut la peine de suivre les conventions Maven dans votre POM indépendamment de votre méthode. Comme le but de mettre votre jar dans un référentiel Maven est de le rendre accessible aux utilisateurs Maven, vous devrez donc définir un POM pour votre artefact publié. Suivre les conventions de nommage aidera vos utilisateurs afin que vous puissiez aussi bien le faire. Par exemple, l'ajout des détails SCM au pom permettra (entre autres choses) à vos utilisateurs d'importer le projet dans leur espace de travail en utilisant les intégrations IDE pour Maven.
Fondamentalement, vous avez 4 options:
- effectuer une construction Maven standard sur un référentiel Maven (déjà exclu)
- configurez un référentiel Maven, faites vos builds avec Ant et utilisez Maven pour déployer le jar et le POM.
- configurez un référentiel Maven, ad utilisez une tâche HTTP Ant pour publier les artefacts
- utilisez un "référentiel" Subversion, et utilisez la tâche SvnAnt pour publier les artefacts
Option 1
Utilisez Maven pour créer et déployer les artefacts (voir le livre Maven et les liens ci-dessus pour plus de détails).
Option 2
En supposant que vous avez un processus de construction qui crée votre jar, et que vous avez défini le POM, votre meilleur pari est de le publier dans le référentiel Sonatype OSS comme ci-dessus.
Le déploiement d'un fichier jar existant dans un référentiel Maven standard est simple avec l'objectif de déploiement de fichiers du plugin Maven deploy:
- configurez votre référentiel (par exemple sur les serveurs Sonatype en déclenchant un Jira demande )
- Construisez votre pot avec Ant.
- Si vous avez défini un POM, placez - le dans le même répertoire que le jar.
-
Exécutez l'objectif de fichier deploy:
Mvn deploy:déployer des fichiers de Durl=http://path/to/your/repository\ -DrepositoryId=some.id \ - Dfile=chemin d'accès à votre artefact-jar \ - DpomFile = chemin d'accès à votre pom.xml
Notez que L'objectif de déploiement Maven traduira automatiquement POM.xml à [Nom du projet]-[version].POM. Si vous faites l'une des deux autres alternatives, vous devrez vous assurer de valider le POM avec le nom final, c'est-à-dire [project-name] - [version].POM. Vous devrez également vous assurer de composer les chemins relatifs pour les artefacts suivant les conventions Maven.
Par exemple pour groupId = com.foo.bar, artifactId=mon-projet version=1.0.0, le chemin d'accès aux fichiers sera:
/com/foo/bar/my-project/my-project-1.0.0.jar
/com/foo/bar/my-project/my-project-1.0.0.pom
Option 3 -
Si vous voulez utiliser Ant pour déployez-vous dans un référentiel Maven, vous pouvez utiliser une bibliothèque HTTP Ant (Notez que je ne l'ai pas essayé moi-même) . Vous composeriez deux tâches HTTP put, une pour le jar et une pour le 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>
Option 4
Si vous voulez éviter complètement Maven et utiliser Ant pour déployer dans un référentiel soutenu par SVN, vous pouvez utiliser la bibliothèque Svnant Subversion . vous devez simplement configurer la tâche Svn import pour ajouter vos artefacts à la télécommande Référentiel Subversion.
<import path ="/dir/containing/the/jar/and/pom"
url="svn://your/svn/repository"
message="release"/>
Vérifier wagon-svn. Il vous permettra de "déployer" dans un dépôt Subversion. C'est un peu compliqué, mais c'est mieux que rien. Je connais quelques projets qui l'utilisent à java.net, et je suis également tombé sur des projets l'utilisant à code.google.com.
Si vous voulez l'utiliser, vous devez d'abord charger wagon-svn en tant qu'extension:
<build>
...
<extensions>
<extension>
<groupId>org.jvnet.wagon-svn</groupId>
<artifactId>wagon-svn</artifactId>
<version>...</version>
</extension>
</extensions>
Ensuite, vous devez définir vos cibles de déploiement à l'aide de l'Identificateur de protocole svn:. Voici un exemple que j'ai copié sur 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>
Vérifiez si le référentiel Maven prend en chargele plugin de déploiement Maven . Ce serait l'approche la plus facile.
La plupart des dépôts utilisent ssh comme transport. Voir ce pour plus de détails.
Une fois qu'il est configuré, tout ce que vous avez à faire est:
mvn deploy:deploy
Vous pouvez soumettre votre pot de https://clojars.org/
Dans votre pom.xml
:
<repositories>
<repository>
<id>clojars.org</id>
<url>http://clojars.org/repo</url>
</repository>
</repositories>