Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Maven的目标是;一揽子计划;在jar中包含资源,但目标是;jar:jar";不';T_Java_Maven 2_Jar_Maven Plugin - Fatal编程技术网

Java 为什么Maven的目标是;一揽子计划;在jar中包含资源,但目标是;jar:jar";不';T

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

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

我已将其配置为如下所示:

<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的。