当前位置: 首页 > 知识库问答 >
问题:

maven-jar-plugin:如何为测试创建一个不同的工件名称?

赖淇
2023-03-14

假设我在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>

然后运行“mvn clean install”。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和artifactId以及不同的systempath。Maven不会读取具有相同groupId和ArtifactiD的两个依赖项。只会读其中一个。

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

共有1个答案

公羊雅达
2023-03-14

我对此的一般回答是:

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

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

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

   <dependency>
      <groupId>groupId</groupId>
      <artifactId>my-artifact-name</artifactId>
      <version>1.2.3</version>
   </dependency>

在同一帐户/计算机上的任何位置,而不给出

 类似资料:
  • 我试图使用Maven将我的测试类打包到一个具有依赖关系的可执行jar中,但我很难做到这一点。 这是我的pom。迄今为止的xml: 当我执行mvn clean package时,构建会创建3个JAR: 可执行文件-tests-1.0。jar//由mvn包阶段构建 executable-tests-1.0-teststjar//由jar插件构建 cucumber试验。jar//通过shade插件构建

  • 问题内容: 我试图使用Maven将测试类打包到具有依赖项的可执行jar中,但是我正在努力做到这一点。 到目前为止,这是我的pom.xml: 当我执行构建时,将创建3个jar: execute-tests-1.0.jar //由mvn软件包阶段构建 execute-tests-1.0-teststjar //由jar插件构建 cumber-tests.jar //由shade-plugin构建 包含

  • 我使用maven在eclipse上开发了spring boot selenium web驱动程序项目。我在中运行测试,并将所有元素、页面和配置放入。 现在我想创建可执行jar。怎么做?可能吗?我想让它从cmd运行,比如 到目前为止,我尝试使用mvn clean安装,mvn clean包来生成。jar文件。但当我试图运行它时,它不起作用。它在中运行main。我想在 这是我的测试类: 这是我在 当我运

  • 问题内容: 使用Maven 3.1 Eclipse Helios Aspekt: 尝试使用maven-jar / dependency-plugins创建可运行的jar文件。 问题: 创建jar文件和依赖项后,当我尝试使用命令启动jar文件时出现NoCLassDefFoundErrors 但是类/文件可以在./dependency-jars文件夹中找到???我还尝试了以下命令: 这也不起作用。 题

  • 问题内容: 我有一个Maven项目,我想从中创建两个可执行的jar文件。一个将与用户交互使用,第二个将作为计划作业运行,读取前者生成的日志文件。最后,除了MANIFEST.MF文件中的Main- Class属性外,我希望两个jar文件都相同。 我正在使用maven-antrun- plugin创建一个可执行jar,在我尝试通过引入Maven配置文件尝试创建第二个jar文件之前,这似乎工作得很好。我

  • 如果我想使用jar实用程序创建一个没有META-INF废话的jar文件,我可以传递-m开关,它将: 我已经有了创建jar文件的配置,而且我不想再搞砸另一个插件...