info java module_Java 9 + Maven + JUnit:测试代码是否需要自己的module-info.java以及放在哪里?...

假设我有一个使用Maven

3和junit的Java项目。有src/main/java和src/test/java目录分别包含主要来源和测试来源(所有内容都是标准的)。

现在,我想将项目迁移到Java9。src/main/java内容表示Java 9模块。有com/acme/project/module-

info.java看大约是这样的:

module com.acme.project {

require module1;

require module2;

...

}

如果测试代码module-

info.java本身需要怎么办?例如,添加对某些模块的依赖关系,该依赖关系仅用于测试,而对于生产代码则不需要。在这种情况下,我必须把module-

info.java以src/test/java/com/acme/project/给模块不同的名称。这样,Maven似乎将主源和测试源视为不同的模块,因此我必须将包从主模块导出到测试模块,并在测试模块中需要包,如下所示:

主模块(在中src/main/java/com/acme/project):

module prod.module {

exports com.acme.project to test.module;

}

测试模块(中src/test/java/com/acme/project):

module test.module {

requires junit;

requires prod.module;

}

这产生

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile (default-testCompile) on project test-java9-modules-junit: Compilation failure: Compilation failure:

[ERROR] /home/rpuch/git/my/test-java9-modules-junit/src/test/java/com/acme/project/GreeterTest.java:[1,1] package exists in another module: prod.module

因为一个包在两个模块中定义。所以现在我必须在主模块和测试模块中有不同的项目,这不方便。

我觉得我走错了路,这一切看起来都很丑陋。如何module-

info.java在测试代​​码中拥有自己的功能,或者require没有它如何实现相同的效果(,等)?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值