【问题标题】:How can I define a third Java source folder for Maven which gets compiled into a third JAR?如何为 Maven 定义第三个 Java 源文件夹,该文件夹被编译成第三个 JAR?
【发布时间】:2014-03-06 15:00:06
【问题描述】:

默认情况下,Maven标准目录布局有两个Java源码文件夹:

src/main/java
src/test/java

出于我的目的,我需要第三个 src/junit/java,它应该使用分类器 junit 打包到 JAR 中。

如果可能,新的源文件夹应该有它自己的类路径(编译 + 范围为 junit 的所有内容)。

我的猜测是,为此,我至少必须修改资源并编译插件。

或者有没有更简单的方法?

我有一个 workaround as explained here,但为此,我必须将 Mockito 和 JUnit 之类的东西放在 compile 类路径上,这违反了我的纯洁感。

对于所有怀疑我的方法是否明智的人:当您使用来自src/main/java 的代码时,我有帮助编写单元测试的支持代码。由于我在项目本身的测试中使用相同的支持代码,因此需要在 after src/main/javabefore src/test/java 编译此代码。

具体来说,我的支持代码需要从src/main/java 导入代码,并且测试需要能够导入支持代码。

【问题讨论】:

  • 为什么你的支持代码不能包含在测试目录中?如果依赖项是正确的,它将在需要它的测试代码之前出现,对吧?
  • @DrLivingston:因为我还有其他项目也需要支持代码。
  • 我想我仍然缺少一些东西。就你所说的听起来你的支持代码需要它自己的位置,然后你的测试代码应该依赖它和主代码? (我认为或多或少是 INK 下面的回答所暗示的)
  • 我的依赖树是 main

标签: maven-3 maven-compiler-plugin


【解决方案1】:

我见过一些 Maven 设置,它们将测试代码捆绑在自己的 Maven 模块中。然后,您可以使用它创建一个简单的 main-module

编辑:

如果您对此设置有关于代码覆盖率的问题,您可以使用 Jacoco Maven 插件将 test-module 生成的测试覆盖率聚合到 main-module。更多信息请参见:http://www.petrikainulainen.net/programming/maven/creating-code-coverage-reports-for-unit-and-integration-tests-with-the-jacoco-maven-plugin/

【讨论】:

  • 我知道这是可能的,但是在 Sonar 等工具中,所有三个模块的测试覆盖率都是 0%。
  • 您是否尝试使用 Jacoco 生成代码覆盖率数据,然后使用 Sonar Jacoco 插件?我知道我不久前就是这样做的,而且效果很好。可悲的是,我再也无法访问 poms 了 :( 也许这可以帮助您找到解决方案:petrikainulainen.net/programming/maven/…
  • 我觉得这篇博文让我离目标又近了一大步。请编辑您的答案并添加此信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
相关资源
最近更新 更多