web-dev-qa-db-fra.com

Maven: comment exporter un projet avec des sources et des dépendances

J'ai un projet Maven avec des dépendances dans le repo et tout ça. Je veux "exporter" ses sources avec toutes les dépendances afin de pouvoir l'ouvrir avec succès dans IDE sans que Maven s'exécute sur une machine.

Lors de l'empaquetage du projet dans un fichier war, toutes les dépendances sont emballées avec lui.

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

27
glaz666

Essayez maven-dependency-plugin avec 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 maven et l'intégration IDE (pour Eclipse pe)? Maven peut générer des projets pour des éléments particuliers IDE = et inclure tous les fichiers jar 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 des dépendances de copie dans le sous-dossier.

32
cetnar

En fait, il n'y a rien qui va créer un bundle avec les dépendances sources et 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 aidera comme l'a souligné cetnar.

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

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

10
Pascal Thivent

Guerre avec les 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>
0
Georgy Gobozov