【问题标题】:How do I install a test-jar in maven?如何在 Maven 中安装测试罐?
【发布时间】:2011-09-22 02:02:41
【问题描述】:

我有一个要安装的测试罐。我不确定是否有不同的方法来安装 test-jar,例如定义一个告诉 maven 它是 test-jar 的属性。

此外,groupId 和 artifactId 与用于测试的另一个 jar 相同。

到目前为止,我的安装命令如下所示:

mvn install:install-file -DgroupId=com.example -DartifactId=example -Dpackaging=jar -Dversion=1.2.3 -Dfile=example-test.jar -DgeneratePom=true

那么我将如何安装测试 jar?我知道必须有一些东西告诉 maven 它是一个 test-jar,因为 groupId 和 artifactId 与另一个 jar 相同(这将是 example-test.jar 测试的 jar)。

【问题讨论】:

标签: maven jar artifact


【解决方案1】:

您无需手动安装它们。 Maven 会在执行时为您执行此操作:

mvn clean install

您需要如下配置:

    ...
    <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-jar-plugin</artifactId>
               <version>2.2</version>

               <executions>
                   <execution>
                       <goals>
                           <goal>test-jar</goal>
                       </goals>
                   </execution>
               </executions>
           </plugin>
        </plugins>
    </build>
    ...

然后,稍后在您需要使用它的其他模块中,您需要将依赖项的类型定义为:

 <dependency>
    <groupId>com.foo</groupId>
    <artifactId>bar</artifactId>
    <version>1.2.3</version>
    <type>test-jar</type>
    <scope>test</scope>
 </dependency>

【讨论】:

  • 对,但是假设这两个项目都是聚合 POM 的一部分,对吧?当提供 test-jar 的项目与使用 test-jar 的项目完全分离时会发生什么?我想先在第一个项目中安装 test-jar,这样它就可以在我的本地 ~/.m2/repository 中,对吗?我该怎么做?
  • 在原始发帖者的问题或我的回答中都没有提到聚合器。您可以将这两个项目完全分开。您仍然可以以相同的方式添加 test-jar 依赖项。您只关心生成test-jar 的项目必须在项目使用它之前构建。
  • 好吧,如果它们完全分开,那么一个项目必须有某种机制来找到测试 jar。但从我的单独问题stackoverflow.com/q/46943636/421049 看来,使用mvn install 实际上可能会在本地存储库中安装测试 jar 以及主 jar,所以这很有意义并允许其他项目找到它们。
【解决方案2】:
mvn install:install-file 
    -DgroupId=com.example 
    -DartifactId=example 
    -Dversion=1.2.3 
    -Dclassifier=tests 
    -Dpackaging=test-jar 
    -Dfile=example-1.2.3-tests.jar

【讨论】:

    【解决方案3】:

    您将测试代码与普通代码放在同一个项目中,位于 /src/test/java 下。 Maven 负责不将测试代码包含在打包的 jar 中。如果您有仅用于单元测试的依赖项(例如 mockito、junit 等),那么您在 maven 依赖项中为它们提供“测试”范围,它们将可用于单元测试但不包含在实际 jar 中.

    【讨论】:

      【解决方案4】:

      我猜你可能错过了 generatePom 标志,我得到了同样的错误,但最后下面的工作了

      mvn install:install-file 
          -Dfile=c:/primo/primo-1.0.0-SNAPSHOT.jar 
          -DgroupId=uk.bl.primo 
          -DartifactId=primo 
          -Dversion=1.0.0 
          -Dpackaging=jar 
          -DgeneratePom=true
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-12
        • 1970-01-01
        • 2013-06-11
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-19
        相关资源
        最近更新 更多