maven如何安装带有分类器的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

我有一个像这样的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>

                <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并使其成为一个