下面从概念 → 准备 → 实践步骤 → 常见问题四个层面,系统讲一下如何把现有 Java 项目迁移到 Java Module(JPMS,Java Platform Module System)。
Java 9 引入的 Module System,核心是:
module-info.java 明确声明:
requires)exports)opens)module com.example.service {
requires java.sql;
requires com.example.common;
exports com.example.service.api;
}
确保:
module-info.java放在 源码根目录(如 src/main/java):
module com.example.app {
requires java.logging;
requires com.google.gson;
exports com.example.app.api;
}
⚠️ 模块名必须全局唯一(通常用反向域名)
exports 对外 API 包opens com.example.app.entity to spring.core;
module-infogson-2.10.jar → gson)requires gson;
--add-exports / --add-opens(不推荐长期使用)javac -d out $(find src -name "*.java")
java --module-path out -m com.example.app/com.example.app.Main
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<release>17</release>
</configuration>
</plugin>
module-info.javacommon
service
web
module com.example.web {
requires com.example.service;
}
✅ 使用:
opens package to framework.module;
✅ 方案:
Automatic-Module-Name✅ 一个包只能属于一个模块
✅ 测试可单独模块:
requires com.example.app;
✅ 渐进式迁移
✅ 新项目直接用 Module ✅ 老项目:核心模块优先
✅ 适合:
❌ 不适合:
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。