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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager