Bonjour,

je souhaite créer un jar exécutable dont l'archive doit contenir un répertoire lib avec les jars des différentes dépendances (mon lanceur contient un système de chargement à chaud des librairies contenues dans le répertoire lib de l'archive).
Une fois cette opération réalisée, je souhaiterais signer l'archive.

Voici le pom que j'ai essayé de me constituer :
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
<project xmlns="http://maven.apache.org/POM/4.0.0" 
	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>LanceurBatch</groupId>
  <artifactId>LanceurBatch</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 
  <build>
    <!-- Les sources java se trouvent sous src/java et les TUs sous src/test -->
    <sourceDirectory>src/java</sourceDirectory>
    <testSourceDirectory>src/test</testSourceDirectory>
 
    <!-- Les jar créé sera sous target... -->
    <directory>target</directory>
    <outputDirectory>target/classes</outputDirectory>
    <testOutputDirectory>target/test-classes</testOutputDirectory>
    <!-- <finalName>${artifactId}-${version}</finalName>  -->
    <finalName>${artifactId}</finalName>
 
	<!-- Le bloc ressource permet d'indiquer à maven que l'on souhaite
	que les fichiers XML, PROPERTIES, XSD ET TLD présent dans les sources java
	soient intégrées au jar final -->
	<resources>
	    <resource>
	        <directory>src/java</directory>
	        <includes>
	            <include>**/*.xml</include>
	            <include>**/*.properties</include>
	            <include>**/*.xsd</include>
	            <include>**/*.tld</include>
	        </includes>
	        <excludes>
	        	<exclude>**/*.java</exclude>
	        </excludes>
	    </resource>
	</resources>
 
	<plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          	<compilerVersion>1.6</compilerVersion>
          	<source>1.6</source>
          	<target>1.6</target>
          	<showDeprecation>true</showDeprecation>
          	<showWarnings>true</showWarnings>
        </configuration>
      </plugin>
    
          
      <!-- Gestion de l'assemblage -->
      <plugin>
		   <groupId>org.apache.maven.plugins</groupId>
		   <artifactId>maven-assembly-plugin</artifactId>
		   <executions>
		     <execution>
		       <phase>package</phase>
		       <configuration>
		         <descriptorId>jar-with-dependencies</descriptorId>
		         <descriptors>
	            	<descriptor>descriptor.xml</descriptor>
	          	 </descriptors>
	          	 <archive>
		            <manifest>
		              <mainClass>fr.main.LanceurBatch</mainClass>
		              <addClasspath>false</addClasspath>
		            </manifest>
		          </archive>
		       </configuration>
		       <goals>
		         <goal>assembly</goal>
		       </goals>
		     </execution>
		   </executions>
		</plugin> 
    </plugins>
  </build>
 
  <dependencies>
	  <dependency>
	    <groupId>dom4j</groupId>
	    <artifactId>dom4j</artifactId>
	    <version>1.6.1</version>
	  </dependency> 
 
	  <dependency>
	    <groupId>commons-lang</groupId>
	    <artifactId>commons-lang</artifactId>
	    <version>2.4</version>
	  </dependency> 
  </dependencies>
</project>

Voici le détail du fichier descriptor.xml :
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
<assembly>
  <id>jar-with-dependencies</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <!-- Ne rajoute pas les classes de ce projet sous forme de jar dans le répertoire lib -->
      <useProjectArtifact>false</useProjectArtifact>
 
      <outputDirectory>lib</outputDirectory>
      <unpack>false</unpack>
      <scope>runtime</scope>
    </dependencySet>
  </dependencySets>
</assembly>
A la fin du package, maven me créé bizarrement 2 fichiers :
  • LanceurBatch.jar
  • LanceurBatch-jar-with-dependencies.jar


Ensuite, le jar « LanceurBatch-jar-with-dependencies.jar » contient bien les jars des dépendances maven du projet dans le répertoire lib mais il n'y a pas les classes et les ressources de mon projet tandis que l'archive « LanceurBatch-jar.jar » ne contient que les classes et les ressources de mon projet (et pas les dépendances dans le répertoire lib).

J'ai plusieurs questions :
  1. Comment faire pour ne produire qu'un jar nommé ${artifactId} ?
  2. Comment faire pour constituer un jar comprenant les classes et les ressources de mon projet, un manifest et les jars des dépendances dans un répertoire lib ?
  3. Une fois le jar constitué, comment indiquer à maven de le signer ?


Merci pour votre aide...
F.