Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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插件:如何为测试创建不同的工件名称?_Java_Maven_Jar - Fatal编程技术网

Java maven jar插件:如何为测试创建不同的工件名称?

Java maven jar插件:如何为测试创建不同的工件名称?,java,maven,jar,Java,Maven,Jar,假设我在pom.xml文件中添加了以下插件: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <executions>

假设我在pom.xml文件中添加了以下插件:

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <id>make-a-jar</id>
            <phase>compile</phase>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
               <finalName>my-artifact-name</finalName>
            </configuration>
          </execution>
        </executions>
      </plugin>

org.apache.maven.plugins
maven jar插件
2.4
制作一罐
编译
罐子
我的神器名称
我运行“mvn清洁安装”。 Maven在目标库中创建两个jar文件。 第一个jar文件编译源文件,第二个jar编译测试文件。这两个jar将具有相同的工件名称

如果我想在另一个项目中将源代码的jar用作依赖项,我可以在另一个项目中放置以下依赖项:

   <dependency>
      <groupId>groupId</groupId>
      <artifactId>my-artifact-name</artifactId>
      <scope>system</scope>
      <type>jar</type>
      <systemPath>${basedir}/lib/my-artifact-name.jar</systemPath>
   </dependency>

groupId
我的神器名称
系统
罐子
${basedir}/lib/my-artifact-name.jar
到目前为止还不错

如果我还想为测试文件添加依赖项,就会出现问题。在本例中,我将有两个具有相同groupId和artifactId以及不同systemPath的依赖项。Maven不会读取具有相同groupId和artifactId的两个依赖项。其中只有一个将被读取

我能想到的一个解决方案是让Maven为测试提供一个不同的工件名称。
你知道怎么做吗?

我的一般回答是:

src/test/java
中的测试仅用于在构建期间运行它们。它们不需要放在任何罐子里

如果您需要类作为测试的助手类,您可以创建一个包含这些类的单独jar。然后可以将其用作
test
依赖项

无论如何,尽量避免使用
。如果您在计算机上使用
mvn clean install
构建项目,您可以使用如下依赖项引用生成的jar


groupId
我的神器名称
1.2.3

在同一帐户/计算机上的任何位置,如果不提供

首先,
不是推荐的方法。如果您
mvn clean install
一个项目,则不需要系统路径将其用作依赖项(在同一台计算机/帐户上)。第二,你的“第二个罐子”的目的是什么?里面应该有什么?它用于什么?一个jar用于源文件,第二个jar用于测试文件通常,您不会将测试文件放入jar中。那你为什么要这样?您想用这个jar做什么?是的,但是本地m2存储库应该足够了,而不是系统路径。如果需要,它应该安装为多用户访问。对于多个用户,您不应该使用共享的本地存储库,而应该使用存储库管理器,如Artifactory或Nexus。