maven如何安装带有分类器的jar,而不安装默认的jar
我有一个像这样的pom。我所要做的就是将文件安装为llews-1.0-test.jar,而不是llews-1.0.jar。虽然这个pom安装了一个jar作为llews-1.0-test.jar,但它也安装了llews-1.0.jar(默认)jar。如何禁用默认安装maven如何安装带有分类器的jar,而不安装默认的jar,maven,Maven,我有一个像这样的pom。我所要做的就是将文件安装为llews-1.0-test.jar,而不是llews-1.0.jar。虽然这个pom安装了一个jar作为llews-1.0-test.jar,但它也安装了llews-1.0.jar(默认)jar。如何禁用默认安装 <build> <finalName>llews-${project.version}-test</finalName> <plugi
<build>
<finalName>llews-${project.version}-test</finalName>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>install test</id>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${project.build.directory}\${project.build.finalName}.jar</file>
<pomFile>${basedir}\pom.xml</pomFile>
<classifier>test</classifier>
</configuration>
</execution>
</executions>
</plugin>
</build>
llews-${project.version}-test
org.apache.maven.plugins
maven安装插件
2.3.1
安装测试
安装
安装文件
${project.build.directory}\${project.build.finalName}.jar
${basedir}\pom.xml
测试
最好的方法可能是替换默认的jar插件执行,如下所示
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<configuration>
<classifier>test</classifier>
</configuration>
</execution>
</executions>
</plugin>
maven jar插件
默认jar
测试
这样,您的默认工件将只具有所需的分类器,并且安装和部署在默认情况下都将做正确的事情
当然,您不应该另外修改finalName,因为jar插件将向其添加分类器
注意:虽然这回答了给定的问题,但我同意Manfred Moser的观点,即您想要做的事情看起来不是一个好主意。最好的方法可能是替换默认的jar插件执行,如下所示
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<configuration>
<classifier>test</classifier>
</configuration>
</execution>
</executions>
</plugin>
maven jar插件
默认jar
测试
这样,您的默认工件将只具有所需的分类器,并且安装和部署在默认情况下都将做正确的事情
当然,您不应该另外修改finalName,因为jar插件将向其添加分类器
注意:虽然这回答了给定的问题,但我同意Manfred Moser的观点,即您想做的事情看起来不是一个好主意。您不应该使用分类器来表示这是一个测试工件。不需要所有的finalName hack和jar插件重新配置,只需将artifactId更改为leews test即可
通过这种方式,很明显,从名称和对它的依赖性来看,它是一个测试工件,可以使用它而不需要分类器,而且一切都可以开箱即用。您不应该使用分类器来表示它是一个测试工件。不需要所有的finalName hack和jar插件重新配置,只需将artifactId更改为leews test即可
通过这种方式,很明显,它是一个测试工件,从名称和对它的依赖关系来看,它可以使用它,而不需要分类器,而且一切都可以开箱即用。我的问题是,为什么要这样做?我想不出一个合理的用例。因为我正在构建一个测试环境中使用的测试jar,所以我使用这个名称,这样人们就不会错误地使用它。所以只需在artifactId中命名一个测试,而不是使用分类器。。这将是更好、更干净的方法,使用它的人在依赖它时不必使用分类器。您正在用它不适用的东西重载分类器,因此使事情变得更加困难。那个么分类器的用途是什么呢?我的问题是你为什么要这么做?我想不出一个合理的用例。因为我正在构建一个测试环境中使用的测试jar,所以我使用这个名称,这样人们就不会错误地使用它。所以只需在artifactId中命名一个测试,而不是使用分类器。。这将是更好、更干净的方法,使用它的人在依赖它时不必使用分类器。您正在用它不适用的东西重载分类器,因此使事情变得更加困难。那个么分类器的用途是什么呢?但是在这种情况下,当我使用另一个配置文件来构建生产jar时,我如何在配置文件中更改这个名称呢?哦。。。好。。它不是一个测试工件,因为它包含测试,而是因为它是为QA/测试环境配置的?如果是这样的话,你可以使用你所使用的方法。。或者为每个模块使用单独的模块。对。让我澄清一下。我们有测试环境和生产环境。不同的jar用于不同的设置。为了避免误用,我想给它们取个不同的名字。所以我用分类器来区分它们。但是如果我想构建一个包含所有测试用例的jar,我应该怎么做呢?仍然是分类器?但是在这种情况下,当我使用另一个配置文件来构建生产jar时,我如何在配置文件中更改这个名称?哦。。。好。。它不是一个测试工件,因为它包含测试,而是因为它是为QA/测试环境配置的?如果是这样的话,你可以使用你所使用的方法。。或者为每个模块使用单独的模块。对。让我澄清一下。我们有测试环境和生产环境。不同的jar用于不同的设置。为了避免误用,我想给它们取个不同的名字。所以我用分类器来区分它们。但是如果我想构建一个包含所有测试用例的jar,我应该怎么做呢?仍然分类器?基本上,在这个项目中,我有两个配置文件,一个用于测试,一个用于生产。当我使用测试概要文件时,我想安装llews-1.0-test.jar。llews-1.0-prod.jar产品的生产配置文件,但找不到一个好方法。@Nan-如果您的工件非常相似,以至于您觉得配置文件比单独的模块更适合,并且如果您真的想将这两个变体安装到存储库中,那么分类器可能是最好的选择。在我的例子中,我想构建一个常规的库jar并使其成为一个