2009-08-14 7 views
22

Je suis l'hôte d'un petit projet open source sur Google Code, et j'ai été invité à 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 faire cela?Référentiel Maven pour le projet de code Google

Existe-t-il un référentiel 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 été googler et trouvé this, ce qui semble joli et simple, mais il semble un peu ... contrairement à l'esprit de Maven, de commettre des fichiers jar à SVN :).

De même, existe-t-il un moyen de garder trace du nombre de téléchargements, comme le fait Google Code?

EDIT

je reçois des 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 dans ANT, et pour le dire franchement, j'ai l'intention de le garder de cette façon :). Je veux juste aider les utilisateurs de Maven à inclure mon pot dans leurs projets.


La solution que je suis allé avec à la fin

En fin de compte, je l'ai fait utiliser la solution que je referenced avant, où je commets simplement une prise en pension Maven à SVN. J'ai le script ANT appel Maven pour mettre en place le repo local, puis appel SVN pour le valider dans Google Code. Pour ceux qui sont intéressés: regardez mon script de construction here, dans la cible publish-maven.

+0

projet open source est que par la voie? –

+0

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

+0

thx, l'air vraiment cool! –

Répondre

24

Il y a un guide to the central repository qui a une section sur des projets qui peuvent aider le téléchargement de. Si rien d'autre vous pouvez vérifier les conventions de nommage et les exigences minimales d'informations sur votre projet. Sonatype fait également l'hébergement du référentiel OSS, voir their guide pour plus de détails. Mise à jour: Je ne dis pas que vous devriez changer votre processus de construction - si Ant travaille pour vous y tenir. Il vaut la peine de suivre les conventions Maven dans votre POM indépendamment de votre méthode de construction. Comme le but de mettre votre jar dans un dépôt Maven est de le rendre accessible aux utilisateurs de Maven, vous devrez donc définir un POM pour votre artefact publié. Suivre les conventions de nommage aidera vos utilisateurs, alors vous feriez mieux de 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:

  1. Effectuer une Maven Construction standard contre un dépôt Maven (déjà exclu)
  2. Mettre en place un référentiel Maven, faites vos builds Ant et Maven pour déployer le pot et POM.
  3. Mettre en place un référentiel Maven, ad utiliser une tâche HTTP Ant pour publier les objets
  4. Utilisez un Subversion "référentiel", et utilisez la tâche SvnAnt de publier les objets

Option 1 Utilisez Maven pour créer et déployer les artefacts (voir le Maven book et les liens ci-dessus pour les détails)


Option 2

En supposant que vous avez un processus de construction qui crée votre pot, et vous avez défini le POM, votre meilleur pari est de publier au dépôt Sonatype OSS comme ci-dessus.

Déploiement d'un pot existant à un référentiel Maven standard est simple avec le Maven déployer le but de plug-in Déployez-file:

  1. Configurez votre dépôt (par exemple sur les serveurs sonatype en soulevant un Jira request)
  2. Construire ton pot avec Ant.
  3. Si vous avez défini un POM, placez-le dans le même répertoire que le fichier jar.
  4. Exécutez le but fichier deploy:

    mvn deploy: déployer fichier -Durl = http://path/to/your/repository \ -DrepositoryId = some.id \ -Dfile = path-to-your-artefact-pot \ - DpomFile = path-to-your-pom.xml

Notez que le but de déployer Maven se traduira automatiquement le pom.xml à [nom de projet] - [version] .pom. Si vous effectuez l'une des deux autres alternatives, vous devez vous assurer que vous avez validé le POM avec le nom final, c'est-à-dire [nom-projet] - [version] .pom. Vous devrez également vous assurer de composer les chemins relatifs pour les artefacts suivant les conventions Maven.

E.g. pour groupId = com.foo.bar, artifactId = my-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 utilisez Ant pour déployer dans un dépôt Maven, vous pouvez utiliser un Ant HTTP library (Notez que je ne l'ai pas essayé moi-même). Vous devez composer deux tâches HTTP put, une pour le pot 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 dépôt soutenu par SVN, vous pouvez utiliser le SvnAnt Subversion library. vous devez simplement configurer la tâche Svn import pour ajouter vos artefacts au référentiel Remote Subversion.

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

Merci, ce message a été très utile. – javamonkey79

1

Vérifiez si le référentiel Maven prend en charge maven deploy plugin. Ce serait l'approche la plus facile.

La plupart des référentiels utilisent ssh comme moyen de transport. Voir this pour plus de détails.

Une fois qu'il est la configuration, tout ce que vous avez à faire est:

mvn deploy:deploy 
+0

Merci! Semble intéressant. Malheureusement, mon script de construction est dans ANT. Je ne suppose pas qu'il existe un plugin similaire pour ANT :)? – jqno

7

Vérifiez wagon-svn. Cela vous permettra de vous '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 sur java.net, et j'ai également rencontré des projets qui l'utilisent sur code.google.com.

Si vous voulez l'utiliser, alors vous devez d'abord charger wagon-svn comme une extension:

<build> 
    ... 
    <extensions> 
     <extension> 
     <groupId>org.jvnet.wagon-svn</groupId> 
     <artifactId>wagon-svn</artifactId> 
     <version>...</version> 
     </extension> 
    </extensions> 

Ensuite, vous devez définir vos objectifs de déploiement à l'aide du svn: identifiant de protocole. 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> 
+0

Donc, cela automatiserait le processus de déploiement à SVN, suite à l'article de blog que j'ai mentionné dans ma question, n'est-ce pas? Je ne pense pas qu'il y ait quelque chose comme ça pour ANT aussi :)? – jqno

+0

Vous pouvez utiliser Maven avec wagon-svn. Vous n'avez pas besoin de créer un projet Maven complet, créez simplement un POM Maven pour le déploiement. Donc, vous n'utilisez pas Maven pour le système de construction. Construisez votre JAR en utilisant Ant, puis déployez en utilisant 'mvn deploy: deploy-file' et POM approprié qui configure wagon-svn et le" svn maven repository ". –

+0

La configuration wagon-svn ci-dessus n'est pas terminée, vous devez également ajouter le dépôt java.net. Pour plus d'informations, voir: https://wagon-svn.dev.java.net/ –

0

Vous pouvez soumettre votre pot à https://clojars.org/

Dans votre pom.xml:

<repositories> 
    <repository> 
    <id>clojars.org</id> 
    <url>http://clojars.org/repo</url> 
    </repository> 
</repositories> 
Questions connexes