为什么Maven目标"包"包含jar中的资源,但目标"jar:jar"不包含?

1 java maven-2 jar maven-plugin

当我使用Maven目标"包"打包我的项目时,也包括资源.它们最初位于"src/main/resources"目录中.因为我想创建一个可执行jar并将类路径添加到清单中,所以我使用的是maven-jar-plugin.

我把它配置为以下喜欢:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>at.program.Main</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

为什么用"jar:jar"创建的jar文件也不包括我的资源.就我而言,它应该使用与"包"目标相同的目录(在我的情况下继承自Maven Super POM).

Pas*_*ent 10

目标的的Maven的JAR插件是用来" 构建从目前的项目JAR "和只做一两件事:它包的内容到在一个JAR 目录中,而这一切.所以,当你运行时,使用你的pom中的插件配置,但不会做比我提到的更多的事情.如果为空或不存在,则不会在生成的JAR中打包任何类或资源.jar:jar target/classestargetmvn jar:jarjar:jartarget/classes

package 阶段构建生命周期阶段,当你调用mvn package,所有阶段之前 package将被执行(process-resources,compile,process-test-resources等),将触发该插件的目标结合到这些阶段.因此,对于一个项目<packaging>型的jar,jar:jar必然要package和将在运行package,但在此之前阶段,势必前面各阶段的目标package将被触发,包括一个拷贝资源投入target/classes.