编辑:我分析了给定的答案.特别是我测试了Till Brychcy的假设,这个假设似乎成立了,但开了更多问题.在以下大分隔符之后,我在问题的最后添加了分析:"-----------分析Till Brychcy的答案----------"
它以某种方式编译并在IJ中运行,但mvn clean install无法编译测试
我有一个带有2个模块的java 9 maven项目:apimod和clientmod.模块clientmod依赖于模块apimod(这些模块都是Maven模块和Java 9模块).
此外,我希望模块clientmod不仅可以重用生产代码apimod,还可以重用测试代码.这是一个常见的模式,我多次使用Java 8.使用Java 9(它与Java 10相同)它也可以正常工作,只要我不声明module-info.java(也就是说,只要我不这样做)运行模块系统).
但是一旦我这样做,启用测试依赖性似乎会禁用生产依赖:( api.Base一src/main类模块apimod)不再可见client.test.DerivedTest(一src/test类模块clientmod).测试不再编译.
这是Maven还是Java 9中的错误?这是最新版本:Java 9.0.4(与Java 10相同),Maven 3.5.3,maven-compiler-plugin 3.7.0
源代码位于:
git clone https://github.com/vandekeiser/wires.git
Run Code Online (Sandbox Code Playgroud)
我对分支中的测试失败问题进行了"二分法":
git checkout MINIMIZE_ISSUE
`mvn clean install`
Run Code Online (Sandbox Code Playgroud)
- > BUILD FAIL(测试中的编译错误clientmod)
我希望模块clientmod不仅可以重用生产代码,apimod还可以重用测试代码.使用Maven,你就像那样(clientmod/pom.xml):
<dependency>
<groupId>fr.cla</groupId>
<artifactId>apimod</artifactId> …Run Code Online (Sandbox Code Playgroud)