Java 为什么Maven的目标是;一揽子计划;在jar中包含资源,但目标是;jar:jar";不';T
当我用Maven目标“package”打包我的项目时,资源也包括在内。它们最初位于目录“src/main/resources”中。 因为我想创建一个可执行jar并将类路径添加到清单中,所以我使用maven jar插件 我已将其配置为如下所示:Java 为什么Maven的目标是;一揽子计划;在jar中包含资源,但目标是;jar:jar";不';T,java,maven-2,jar,maven-plugin,Java,Maven 2,Jar,Maven Plugin,当我用Maven目标“package”打包我的项目时,资源也包括在内。它们最初位于目录“src/main/resources”中。 因为我想创建一个可执行jar并将类路径添加到清单中,所以我使用maven jar插件 我已将其配置为如下所示: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifa
<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>
org.apache.maven.plugins
maven jar插件
2.2
符合事实的
主程序
为什么用“jar:jar”创建的jar文件不包括我的资源呢。就我而言,它应该使用与“package”目标相同的目录(在我的例子中是从Maven Super POM继承的)。您可以尝试在jar插件配置中使用。您可以尝试在jar插件配置中使用。我发现,当项目打包设置为“jar”时,maven jar插件会自动绑定到包目标。因此,“包”目标完成了我想要的一切,包括将类路径附加到清单和设置主类。我发现,当项目包设置为“jar”时,maven jar插件会自动绑定到包目标。所以“package”目标完成了我想要的一切,包括将类路径附加到清单和设置一个主类。的目标用于“从当前项目构建一个JAR”,并且只做一件事:它将
目标/类
的内容打包到目标
目录中的一个JAR中,就这些。因此,当您运行mvnjar:jar
时,pom中的插件配置会被使用,但是jar:jar
不会比我提到的做更多的事情。如果target/classes
为空或不存在,则结果JAR中不会打包任何类或资源
包
阶段是一个过程,当您调用mvn包
时,将执行包
之前的所有阶段(流程资源
,编译
,流程测试资源
等),并触发插件目标。因此,对于类型为jar
的
项目,jar:jar
绑定到package
,并将在package
阶段运行,但在此之前,绑定到package
之前阶段的目标将被触发,包括将资源复制到target/classes的目标用于“从当前项目构建一个JAR”,并且只做一件事:它将target/classes
的内容打包到target
目录中的一个JAR中,仅此而已。因此,当您运行mvnjar:jar
时,pom中的插件配置会被使用,但是jar:jar
不会比我提到的做更多的事情。如果target/classes
为空或不存在,则结果JAR中不会打包任何类或资源
包
阶段是一个过程,当您调用mvn包
时,将执行包
之前的所有阶段(流程资源
,编译
,流程测试资源
等),并触发插件目标。因此,对于类型为jar
的
项目,jar:jar
绑定到package
,并将在package
阶段运行,但在此之前,绑定到package
之前阶段的目标将被触发,包括将资源复制到target/classes
的问题,这是针对Maven 1的,这个问题是关于Maven 2的。这是针对Maven 1的,这个问题是关于Maven 2的。