Fatjar-maven-plugin : ajouter également les classes de tests d'une librairie
Bonsoir,
dans le pom de mon projet, je souhaite lui demander la génération de trois jars :
- un jar classique avec les fichiers .class
- un jar contenant les sources
+ un dernier jar (se nommant si possible ${pom.artifactId}-FAT-${pom.version}) contenant un manifest avec un MainClass, tous mes fichiers .class mais également, l'ensemble des fichiers présents dans mes dépendances maven (comme le propose fatjar-maven-plugin)
Ce dernier jar ne sera pas déclaré en dépendance dans aucun autre pom mais l'application devra pouvoir se lancer en double-cliquant sur l'icône...
A noter également, que mes dépendances référencent une librairie et les tests unitaires de cette librairie.
Voici mes dépendances :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <dependencies>
<dependency>
<groupId>mon.groupId</groupId>
<artifactId>monArtifactId</artifactId>
<version>0.1-SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>mon.groupId</groupId>
<artifactId>monArtifactId</artifactId>
<version>0.1-SNAPSHOT</version>
<type>test-jar</type>
<optional>true</optional>
</dependency>
<!-- Librairies tierces -->
<dependency>
<groupId>org.swinglabs</groupId>
<artifactId>swingx</artifactId>
<version>0.9.4</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
</dependencies> |
Au niveau des plugins, j'ai déclaré :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| <plugins>
<!--
On indique a maven une compilation avec JDK 1.6 (par defaut, il prend 1.3 !!!)
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<!--
On spécifie dans ce plugin, le répertoire des sources java et des tests
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<!-- Répertoire des sources java -->
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/java</source>
</sources>
</configuration>
</execution>
<!-- Répertoire des tests java -->
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/test</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<!--
On demande la création d'un jar avec les sources dans le repository local
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>bind-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- on demande la création d'un jar fat avec toutes les dépendances -->
<plugin>
<groupId>com.anydoby</groupId>
<artifactId>fatjar-maven-plugin</artifactId>
<version>0.0.2</version>
<executions>
<execution>
<id>pre-jar</id>
<phase>package</phase>
<goals>
<goal>prepare-jars</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>fr.monProjet.monArtifactId.monLanceur</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>monId</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>FAT</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins> |
Cette solution fonctionne presque ... il me créé bien 3 jars.
Cependant, dans le jar FAT, il ne m'insère pas les classes de ma librairie :
Code:
1 2 3 4 5 6 7
| «
<dependency>
<groupId>mon.groupId</groupId>
<artifactId>monArtifactId</artifactId>
<version>0.1-SNAPSHOT</version>
<type>jar</type>
</dependency> » |
,
alors qu'il ajoute bien les classes de tests de cette même librairie puisqu'elles font
parties des dépendances :
Code:
1 2 3 4 5 6 7 8
| «
<dependency>
<groupId>mon.groupId</groupId>
<artifactId>monArtifactId</artifactId>
<version>0.1-SNAPSHOT</version>
<type>test-jar</type>
<optional>true</optional>
</dependency> » |
.
Si je mets en commentaires la dépendance vers le jar des tests unitaires de ma librairie, je retrouve bien les classes de la librairie dans le jar FAT construit par maven.
Avez-vous une solution pour que je puisse avoir à la fois les classes de ma librairie et ses classes de tests unitaires dans le gros jar FAT ?
Merci pour votre aide,
F.