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配置,默认生命周期将正确处理资源。