首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 9模块系统集成到Maven中时,如何处理自动模块

Java 9模块系统集成到Maven中时,如何处理自动模块
EN

Stack Overflow用户
提问于 2017-08-07 02:00:42
回答 1查看 2.4K关注 0票数 6

我已经实践了java 9模块系统与Maven项目的集成。它似乎运行得很好,但我担心在java 9之前编译的maven模块的向后兼容性。

为了向后兼容,JPMS(Java Platform Module System)有自动模块的概念。在JPMS中,没有模块的Jar文件被认为是自动模块,其他java模块可以使用这个jar文件的文件名作为模块名。

在与maven项目集成的情况下,我认为还需要对JPMS向后兼容性的额外支持。首先,基本jar文件和maven jar文件的结构不一样。其次,maven jar文件命名与规则不兼容,可以兼容JPMS模块命名规则。参见下面的示例。

代码语言:javascript
复制
<artifactId>previous-version-module</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

在上述情况下,我们已经使用了以前的版本-模块-0.0.1快照,并希望在新的java 9 maven项目中使用该模块。

代码语言:javascript
复制
module new.module{
  requires previous-version-module-0.0.1-SNAPSHOT
}

但是它会发生编译错误或IDEA工具抛出错误。

我想知道如何使用maven jar文件,该文件是在java 9之前在java 9和maven集成项目中编译的。我搜索了一些额外的模块定义规则或maven插件,我找不到任何解决方案。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-07 10:11:07

如果模块名不明显,则可以使用jar --file=<jarfile> --describe-module查看派生名称。或者,使用--list-modules选项,即java -p <jarfile> --list-modules

一旦您知道了模块的名称,那么您就使用了requires <module>,它应该可以工作。maven编译器插件在构建一个在源树中有一个模块info.java的项目时,将所有依赖于模块路径。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45538431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档