Maven:将资源包含在JAR中
我有一些可怕的beaviour。 我有以下Maven配置:
4.0.0 Test2Certificate 0.1.0-SNAPSHOT jar com.test build 1.0.0 1.7 0.1.0.0 yyyy-MM-dd HH:mm:SSS launch4j-xml-plugin-repo launch4j-xml-plugin Repository for Maven https://launch4j-xml-plugin.googlecode.com/svn/repo ${project.artifactId}_${project.version} org.codehaus.mojo buildnumber-maven-plugin 1.2 validate create false false maven-resources-plugin 2.6 copy-resources validate copy-resources ${basedir}/target true ${basedir}/target/customize customize false ${basedir}/target/resources resources false ${basedir}/target/xml xml false maven-assembly-plugin 2.4 jar-with-dependencies false com.dscsag.dsct2c.main.MainClass com/dscsag/dsct2c/resources/icons/loader/splash_screen.png ${buildNumber} ${project.version} ${maven.build.timestamp} ${project.artifactId}_${project.version} make-assembly package single org.apache.maven.plugins maven-jarsigner-plugin 1.2 sign sign src/main/resources/jarsigner/keystore/dsct2c.keystore dsct2c DSCTest2Certificate DSCTest2Certificate org.bluestemsoftware.open.maven.plugin launch4j-plugin 1.5.0.0 l4j-gui package launch4j gui target/${project.artifactId}_${project.version}.exe target/${project.artifactId}_${project.version}.jar ${project.artifactId} ${project.version} - Error src/main/java/com/dscsag/dsct2c/resources/icons/DSCT2C.ico jre7 1.7.0_17 128 512 1.0.0.0 1.0 Tool to certificate third-party products/adaptor. DSC Software AG ${file.product.version} ${file.product.version} ${project.artifactId} ${project.artifactId} ${project.artifactId}_${project.version}.exe commons-io commons-io 2.4 org.apache.commons commons-lang3 3.1 com.itextpdf itextpdf 5.4.2 org.jsoup jsoup 1.7.2 junit junit 4.6 test org.swinglabs.swingx swingx-all 1.6.4 log4j log4j 1.2.17 com.toedter jcalendar 1.3.2 com.jgoodies jgoodies-common 1.4.0 com.jgoodies jgoodies-looks 2.5.2 dsct2c.help pdf_render 0.9.1 dsct2c.help jh 1.0.0 dsct2c.help hsviewer 1.0.0 dsct2c.help dsct2c_help 1.0.0 commons-codec commons-codec 1.8 commons-net commons-net 3.3
这创建了包含所有类的JAR fie,但是我在类路径中有一些资源也应该包含在内。 如果我将参数clean
在阶段package
前面,那么我的所有资源都会包含在内。 如果我使用mvn clean package
运行maven,则不包含任何资源。 我的资源在src/main/java/com/test/
(不是通常的目录)。
在copy-resources
目标配置中未正确定义资源的源目录。 此外,当target/classes
默认打包时,outputDirectory元素将资源放在target
目录中。 试试这个配置:
${basedir}/target/classes true ${basedir}/src/main/java/com/test/customize false ${basedir}/src/main/java/com/test/resources false ${basedir}/src/main/java/com/test/xml false
也就是说,您可以考虑将资源放在${basedir}/src/main/resources
,如下所示:
src main resources customize resources xml
然后,您可以完全删除额外的maven-resources-plugin
配置,默认生命周期将正确处理资源。