2009-11-17 4 views
26

J'ai un projet Maven avec des dépendances dans les pensions et d'autres choses. Je veux "exporter" ses sources avec toutes les dépendances afin que je puisse l'ouvrir avec succès dans l'EDI sans que Maven fonctionne sur une machine.Maven: comment exporter le projet avec les sources et les dépendances

Lors de l'empaquetage d'un projet dans un fichier war, toutes les dépendances sont incluses.

Donc je veux avoir toutes ces dépendances plus mes sources rassemblées dans un endroit, qui peut être ouvert avec IDE (Eclipse ou IDEA) toutes ces bibliothèques détectées?

Répondre

32

Essayez maven-plugin-dépendance avec l'objectif copy-dependencies

<project> 
[...] 
<build> 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>copy-dependencies</id> 
     <phase>package</phase> 
     <goals> 
      <goal>copy-dependencies</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> 
      <overWriteReleases>false</overWriteReleases> 
      <overWriteSnapshots>false</overWriteSnapshots> 
      <overWriteIfNewer>true</overWriteIfNewer> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 
</build> 
[...] 
</project> 

PS.
Connaissez-vous l'intégration maven et IDE (pour Eclipse p.e.)? Maven peut générer un projet pour un IDE particulier et inclure tous les jars dépendants en tant que variables (pointant vers ces fichiers dans le référentiel local), il n'est donc pas nécessaire d'utiliser copy dependecies dans le sous-dossier.

+0

grâce. Cela peut fonctionner, je vais vérifier cela – glaz666

+0

>> Etes-vous conscient de l'intégration de maven et IDE Si vous parlez d'ouvrir le fichier POM dans l'IDE qui découvrira alors les sources et les dépendances, ce n'est pas ce que je veux. J'ai juste besoin de copier les sources et libs du projet et de pouvoir l'ouvrir et l'exécuter sur la machine sans que maven soit installé. Donc je pense, je vais utiliser le plugin dont vous parlez – glaz666

+0

J'ai un problème avec ce plugin. Si j'ai un compiler dans ma dépendance - il compile, mais n'est pas copié par le plugin de dépendance. Mais si je change une portée en "runtime" ou "import", cela génère une "erreur de compilation": "Echec de l'exécution de l'objectif org.apache.maven.plugins: maven-compiler-plugin: 3.3: compilation (compilation par défaut)) sur le projet AnnotationsProcessors: Echec de compilation ... ... annotations/processeurs/ComplexityProcessor.java: [20,28] ne trouve pas le symbole ". J'ai cette dépendance installée dans le dépôt maven local et elle se construit bien. – DominikStyp

9

En fait, il n'y a rien qui va créer un ensemble avec les sources et dépendances hors de la boîte. Pour cela, vous devrez utiliser une combinaison de certains plugins.

Pour les dépendances, le Maven 2 Dependency Plugin et son copy-dependencies aideront comme indiqué par cetnar.

Pour les sources, vous pourriez avoir besoin du Maven Source Plugin et son objectif source:aggregate (ou peut-être le Maven Assembly Plugin et le descripteur src prédéfini mais source:aggregate est pratique pour les modules multi-construit).

Pour lier le tout (et peut-être déballer les sources), j'utiliserais le Maven Assembly Plugin.

+1

Je suppose par le moyen 'mes sources rassemblées dans un endroit' glaz666 projet java régural moyen avec des sources (à partir de VCS ou non) et toutes les dépendances dans le sous-dossier lib. +1 pour la source: agrégat pour multimodule. – cetnar

0

guerre avec des sources

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <webResources> 
     <resource> 
      <directory>${build.sourceDirectory}</directory> 
      <targetPath>src</targetPath> 
     </resource> 
     </webResources> 
    </configuration> 
    </plugin> 
Questions connexes