Maven: inclure des ressources dans le JAR
j'ai un comportement terrible. J'ai la configuration Maven suivante:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>Test2Certificate</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>com.test</groupId>
<artifactId>build</artifactId>
<version>1.0.0</version>
</parent>
<properties>
<compile.java.version>1.7</compile.java.version>
<file.product.version>0.1.0.0</file.product.version>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:SSS</maven.build.timestamp.format>
</properties>
<pluginRepositories>
<pluginRepository>
<id>launch4j-xml-plugin-repo</id>
<name>launch4j-xml-plugin Repository for Maven</name>
<url>https://launch4j-xml-plugin.googlecode.com/svn/repo</url>
</pluginRepository>
</pluginRepositories>
<build>
<finalName>${project.artifactId}_${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target</outputDirectory>
<includeEmptyDirs>true</includeEmptyDirs>
<resources>
<resource>
<targetPath>${basedir}/target/customize</targetPath>
<directory>customize</directory>
<filtering>false</filtering>
</resource>
<resource>
<targetPath>${basedir}/target/resources</targetPath>
<directory>resources</directory>
<filtering>false</filtering>
</resource>
<resource>
<targetPath>${basedir}/target/xml</targetPath>
<directory>xml</directory>
<filtering>false</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<mainClass>com.dscsag.dsct2c.main.MainClass</mainClass>
</manifest>
<manifestEntries>
<SplashScreen-Image>com/dscsag/dsct2c/resources/icons/loader/splash_screen.png</SplashScreen-Image>
<SCM-Revision>${buildNumber}</SCM-Revision>
<Project-Version>${project.version}</Project-Version>
<Build-Date>${maven.build.timestamp}</Build-Date>
<Project-Name>${project.artifactId}_${project.version}</Project-Name>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>sign</id>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<keystore>src/main/resources/jarsigner/keystore/dsct2c.keystore</keystore>
<alias>dsct2c</alias>
<storepass>DSCTest2Certificate</storepass>
<keypass>DSCTest2Certificate</keypass>
</configuration>
</plugin>
<plugin>
<groupId>org.bluestemsoftware.open.maven.plugin</groupId>
<artifactId>launch4j-plugin</artifactId>
<version>1.5.0.0</version>
<executions>
<execution>
<id>l4j-gui</id>
<phase>package</phase>
<goals>
<goal>launch4j</goal>
</goals>
<configuration>
<headerType>gui</headerType>
<outfile>target/${project.artifactId}_${project.version}.exe</outfile>
<jar>target/${project.artifactId}_${project.version}.jar</jar>
<errTitle>${project.artifactId} ${project.version} - Error</errTitle>
<icon>src/main/java/com/dscsag/dsct2c/resources/icons/DSCT2C.ico</icon>
<jre>
<path>jre7</path>
<minVersion>1.7.0_17</minVersion>
<initialHeapSize>128</initialHeapSize>
<maxHeapSize>512</maxHeapSize>
</jre>
<versionInfo>
<fileVersion>1.0.0.0</fileVersion>
<txtFileVersion>1.0</txtFileVersion>
<fileDescription>Tool to certificate third-party products/adaptor.</fileDescription>
<copyright>DSC Software AG</copyright>
<productVersion>${file.product.version}</productVersion>
<txtProductVersion>${file.product.version}</txtProductVersion>
<productName>${project.artifactId}</productName>
<internalName>${project.artifactId}</internalName>
<originalFilename>${project.artifactId}_${project.version}.exe</originalFilename>
</versionInfo>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.2</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.swinglabs.swingx</groupId>
<artifactId>swingx-all</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>com.toedter</groupId>
<artifactId>jcalendar</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.jgoodies</groupId>
<artifactId>jgoodies-common</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.jgoodies</groupId>
<artifactId>jgoodies-looks</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>dsct2c.help</groupId>
<artifactId>pdf_render</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>dsct2c.help</groupId>
<artifactId>jh</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>dsct2c.help</groupId>
<artifactId>hsviewer</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>dsct2c.help</groupId>
<artifactId>dsct2c_help</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
</dependencies>
</project>
cela crée mon fichier JAR contenant toutes les classes, mais j'ai quelques ressources dans le chemin des classes qui devraient être incluses aussi. Si je laisse le paramètre clean
devant la phase package
, toutes mes ressources sont inclus. Si je exécuter maven mvn clean package
, il n'y a pas de ressources incluses. Mes ressources sont sous src/main/java/com/test/
(pas le répertoire habituel).
1 réponses
les répertoires sources des ressources ne sont pas définis correctement dans copy-resources
configuration du but. De plus, l'élément outputDirectory place les ressources dans le target
dir, lorsque target/classes
Est ce qui est empaqueté par défaut. Essayez cette configuration:
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<includeEmptyDirs>true</includeEmptyDirs>
<resources>
<resource>
<directory>${basedir}/src/main/java/com/test/customize</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>${basedir}/src/main/java/com/test/resources</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>${basedir}/src/main/java/com/test/xml</directory>
<filtering>false</filtering>
</resource>
</resources>
</configuration>
cela dit, vous pourriez envisager de placer les ressources en ${basedir}/src/main/resources
, comme ceci:
src
main
resources
customize
resources
xml
alors, vous pouvez supprimer le supplément maven-resources-plugin
config entièrement, la valeur par défaut du cycle de vie, permettra de traiter les ressources correctement.