2009-06-14 12 views
10

J'ai quelques questions sur les meilleures pratiques et la gestion des référentiels.Meilleures pratiques Maven

Dans mon environnement, je ne veux pas sortir dans le référentiel central de maven mais plutôt tout stocker dans un référentiel interne. Dois-je simplement demander à chaque utilisateur de placer les informations dans le fichier settings.xml qui désactive l'utilisation des instantanés ou des versions du référentiel maven ou doit-il être dans un fichier POM?

En outre, j'aimerais que tous les utilisateurs se rendent dans le même référentiel d'entreprise. Est-ce que cette information de dépôt doit être mise dans le pom ou dans settings.xml? Si c'est dans le pom, comment maven va-t-il savoir à aller au dépôt puisqu'il doit déjà savoir où se trouve le dépôt pour obtenir le pom?

Répondre

6

Dans un grand projet, il est préférable d'avoir plusieurs référentiels.

  1. Le proxy société/cache stockera pots donwloaded localement afin que l'entreprise ne soit pas tributaire de la disponibilité des sites externes. Il est accédé comme un référentiel normal mais il s'agit d'une passerelle vers les référentiels publics.

  2. Le référentiel d'entreprise pour les bibliothèques publiées est restreint, il contient des bibliothèques internes. Ce sont des frameworks qui sont "promus" depuis les référentiels de projet vers le référentiel d'entreprise car ils peuvent être utiles pour tous les projets.

  3. Les référentiels de projet contiennent des artefacts utilisés par le projet. Il peut contenir des artefacts de sous-projet et ainsi de suite. Chaque développeur d'un projet devrait être capable de publier quelque chose ici.

Où vous mettez les paramètres est une question de goût. Je mets ces choses dans le settings.xml. Car si l'adresse des référentiels internes change, vous devrez sinon modifier les projets.

+0

Tout cela est correct - je recommande la recherche en lien (http://nexus.sonatype.org/) pour une bonne solution à tous ce qui précède. –

+0

Merci. J'utilise Archiva d'Apache pour sa simplicité, mais je vais aussi me pencher sur Nexus. Nous travaillons sur un petit projet en ce moment, essayant simplement de mettre ces choses en place dès le début. –

+1

+1 sur Nexus. C'est super facile à configurer et à utiliser. –

10

Première étape: Installez nexus sur un serveur de votre réseau local. C'est excellent - facile à installer (vraiment, juste quelques minutes!) Et solide. Nous avons une cinquantaine d'ingénieurs et de nombreux serveurs CI qui fonctionnent toute la journée et qui sont stables depuis de nombreux mois. Disons que vous l'avez installé sur un serveur appelé "nexus.local" dans votre DNS.

Étape deux: Copiez le settings.xml de http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html, fixer le nom d'hôte si nécessaire, engager à votre système de code source et dire à tous vos développeurs de le copier dans leur ~/.m2/settings.xml.

Étape trois: Configurez correctement le fichier pom.xml de votre projet. Vous voulez une section « POM parent » qui définit un « distributionManagement » qui ressemble à ceci:

<distributionManagement> 
    <snapshotRepository> 
     <id>nexusSS</id> 
     <name>Nexus Snapshot Repository</name> 
     <url>http://nexus.local:8081/nexus/content/repositories/snapshots</url> 
    </snapshotRepository> 
    <repository> 
     <id>nexusRelease</id> 
     <name>Nexus Release Repository</name> 
     <url>http://nexus.local:8081/nexus/content/repositories/releases</url> 
    </repository> 
    </distributionManagement> 

Étape quatre: activez l'option « mvn déployer » - allez à votre interface utilisateur de lien (quelque chose comme http://nexus.local:8081/nexus), cliquez sur utilisateurs, cliquez sur "déploiement" et attribuez-lui un mot de passe. Ensuite, modifiez votre ~/.m2/settings.xml et ajoutez ceci:

<settings> 
    ... 
    <servers> 
    <server> 
     <id>nexus</id> 
     <username>deployment</username> 
     <password>PASSWORD</password> 
    </server> 
    </servers> 
</settings> 

Vérifiez que cela fonctionne en exécutant « mvn déployer », et vous devez avoir installé les objets de votre projet en lien.

Étape cinq: Lisez cette excellente documentation pour maven: http://www.sonatype.com/products/maven/documentation/book-defguide

+2

Pour "Étape 4", ne voulez-vous pas que l'ID du serveur corresponde à celui de l'ID dans distributionManagement à l'étape trois? – Nicholas