我在Kotlin中使用Jigsaw JPMS有一个多模块Gradle project,除非每个模块我have:
compileKotlin {
...
destinationDir = compileJava.destinationDir
}
然后我得到(对于每个模块,在这种情况下为uno_awt
):
IdeaProjects \ uno-sdk \ uno-awt \ src \ main \ java \ module-info.java:16:错误:程序包为空或不存在:uno.awt 出口uno.awt;
但是,destinationDir = compileJava.destinationDir
会产生以下警告:
在此版本中使用了不推荐使用的Gradle功能,使其与Gradle 7.0不兼容。 使用“ --warning-mode all”来显示各个弃用警告。
因此,我使用--warning-mode all
重新运行:
不建议使用默认重复策略复制或存档重复路径。计划在Gradle 7.0中将其删除
可以通过使用以下示例指定重复策略来解决:
jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE }
但是,ilya gorbunov并没有在他的示例here中重复该目录(他也says明确地表示不需要该目录)
所以,我的问题本质上是:
为什么在我看来这是强制性的?
这是很好的方法还是某种棘手的解决方法,并且有“正确的方法”来做到这一点?
规格: