如何在maven中安装测试jar?

如何在maven中安装测试jar?,maven,jar,artifact,Maven,Jar,Artifact,我有一个我想安装的测试jar。我不确定是否有其他方法来安装测试jar,比如定义一个属性来告诉maven它是一个测试jar 此外,groupId和artifactId与测试所用的另一个jar相同 到目前为止,我的install命令是这样的: mvn install:install-file -DgroupId=com.example -DartifactId=example -Dpackaging=jar -Dversion=1.2.3 -Dfile=example-test.jar -Dgene

我有一个我想安装的测试jar。我不确定是否有其他方法来安装测试jar,比如定义一个属性来告诉maven它是一个测试jar

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

到目前为止,我的install命令是这样的:

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

那么,我到底应该如何安装一个测试jar呢?我知道必须告诉maven这是一个测试jar,因为groupId和artifactId与另一个jar相同(example-test.jar就是测试的jar)。

您不需要手动安装它们。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>
    ...
。。。
org.apache.maven.plugins
maven jar插件
2.2
试验罐
...
然后,稍后在您需要使用它的其他模块中,您需要将依赖项的类型定义为:

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

com.foo
酒吧
1.2.3
试验罐
测试

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

我想您可能错过了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

packagin应该是test-jar-dppackaging=test-jar,对吧,但这假设两个项目都是聚合POM的一部分,对吗?当提供测试jar的项目与使用测试jar的项目完全分离时会发生什么?我想首先在第一个项目中安装测试jar,这样它就可以在我的本地
~/.m2/存储库中了,对吗?我该怎么做?无论是在原始海报的问题中,还是在我的回答中,都没有提到聚合器。您可以将这两个项目完全分开。您仍然可以以相同的方式添加
测试jar
依赖项。您所关心的是,生成测试jar的项目必须在项目使用它之前构建。如果它们完全分开,那么一个项目必须有某种机制来找到测试jar。但是从我的另一个问题来看,使用
mvn install
实际上可能会将测试jar与主jar一起安装在本地存储库中,这样做是有意义的,并允许其他项目找到它们。
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