【问题标题】:can we generate module-info.java file in existing maven project我们可以在现有的 maven 项目中生成 module-info.java 文件吗
【发布时间】:2022-01-04 11:58:21
【问题描述】:

我们已有带有 java 8 和 spring boot 的 java 项目。我们正在迁移到 java 11,并且随着 java 9 开始使用 modules-info.java。我想知道是否有办法根据现有项目自动生成 modules-info.java?

【问题讨论】:

  • 首先你为什么喜欢使用模块?此外,问题是:如果你在 spring boot 中,你为什么喜欢使用 module ? Spring Boot 应用程序最终是一个单独的 jar 文件,它只能包含一个 modules-info.java,这意味着没有真正的好处?不,您不能根据您的项目生成 modules-info.java....
  • @khmarbaise 至少最后一句话不正确。
  • 你可以不使用模块。它们不是必需的。只有非常大的代码库才能从中受益。
  • @Holger 正如您自己在回答中所写的那样......它需要手动更正,只有在您了解使用模块的含义(以及它们如何工作)并且永远不会自动生成的情况下才能这样做100% 正确。所以自己动手并学习它是如何工作的......而不是在不了解它的情况下使用生成工具......
  • @khmarbaise 即使我知道工具的作用,当工具可以完成工作时,也没有理由手动完成所有工作。这与在 IDE 中选择“New Class”并让它填充众所周知的存根没有什么不同。是的,实际代码还是要自己填写,为什么还要重复写琐碎的东西呢?

标签: java spring-boot maven java-11


【解决方案1】:

您可以使用the jdeps command 生成module-info.java 文件。

语法是

[path to jdk’s bin]jdeps --generate-module-info <path to source> <path to compiled jar>

而 jar 文件包含已编译的当前非模块化类文件,而源目录是 module-info.java 的目标。

jdeps 将分析依赖关系并假定 jar 文件的名称(不带.jar 后缀)作为模块名称并存储一个文件&lt;path to source&gt;\&lt;module-name&gt;\module-info.java,该文件适用于在源代码中具有模块目录的目录布局文件夹而不是单模块布局。

当然,这种分析有局限性,随后可能需要手动更正。

【讨论】:

  • 这也意味着有一个可能是错误的单个模块弹簧启动应用程序等。
猜你喜欢
  • 2021-10-09
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多