从 Maven 项目发布测试实用程序

发布于 2024-10-07 11:27:20 字数 203 浏览 5 评论 0原文

我在 Maven 中创建了一个库,可以通过实现一些接口来扩展它。为了测试默认实现,我编写了一些 hamcrest 匹配器,这些匹配器当前位于 src/test/java 中。

但是,我认为如果库的用户想要测试其自定义,它们可能会很有用。

那么我怎样才能让它们可用呢?将它们移动到 src/main 需要使 hamcrest 成为运行时依赖项,但我不希望这样做。

I created a library in maven that can be extended by implementing some interfaces. To test the default implementation I have written some hamcrest matchers that currently live in src/test/java.

However, I think they might be useful for users of the library if they want to test their customization.

So how can I make them available? Moving them to src/main would require to make hamcrest a runtime dependency and I don't want that.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陈年往事 2024-10-14 11:27:21

有一种方法可以使用命令“mvn jar:test-jar”创建测试 jar 并将其安装到存储库中。然后,其他项目可以使用依赖项块中的 test-jar 修饰符来引用此 jar。

如果您想将此 jar 构建并安装为正常“mvn install”构建的一部分,请将以下插件配置添加到您的 pom 中:

来自 http://maven.apache.org/guides/mini/guide-attached-tests.html

<project>
  <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>
</project>

然后其他项目就可以引用该测试jar,如下:

<dependency>
  <groupId>com.myco.app</groupId>
  <artifactId>foo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>

There is a way to create a test jar and install it into the repository using the command 'mvn jar:test-jar'. This jar can then be referenced by other projects using the test-jar modifier in the dependency block.

If you want to have this jar built and installed as part of your your normal 'mvn install' build add the following plugin config to your pom:

From http://maven.apache.org/guides/mini/guide-attached-tests.html

<project>
  <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>
</project>

Then other projects can reference the test jar as follows:

<dependency>
  <groupId>com.myco.app</groupId>
  <artifactId>foo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>
纵情客 2024-10-14 11:27:21

正如你所说,将其移至新项目中的 src/main 。让该项目仅在测试依赖项中使用,并且不会污染模块的类路径。

As you said, move it to src/main in a new project. Let that project only be used in a test dependency and you don't pollute your module's classpath.

感受沵的脚步 2024-10-14 11:27:21

听起来您需要将它们移至自己的项目并发布它。从那里您可以在原始项目中确定您想要的范围。

It sounds like you need to move them to their own project and release it. From there you can determine in the original project what scope you'd like.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文