【问题标题】:Does maven add all dependencies to modulepath by default?默认情况下,maven 是否将所有依赖项添加到模块路径?
【发布时间】:2020-10-13 08:28:04
【问题描述】:

我在Java 9 Modularity book 上阅读:

依赖关系总是放在模块路径上,即使依赖关系还没有模块化。

[...] 为支持 Java 模块系统而对 Apache Maven 进行的最重要更改如下:

  • 在编译期间使用模块路径
  • 支持混合使用显式模块和自动模块作为依赖项

我正在查看 maven 文档,但在任何地方都找不到此信息。

默认情况下,maven 是否将 <dependencies> 添加到 modulepath(仅?),如果是,在哪个 maven 版本之后?

如果上述情况属实,是否有办法指示 maven 根本不使用 modulepath

【问题讨论】:

  • 不是“在哪个 maven 版本之后?”如果确保兼容性,就变得微不足道了?

标签: maven java-module java-platform-module-system maven-compiler-plugin module-path


【解决方案1】:

不,Maven 仅为那些具有模块描述符 (module-info.java) 的 Maven 模块将依赖项置于模块路径。非模块化 Maven 模块仍然将它们的依赖项放在类路径中。

您可以使用 -X 选项运行 Maven,以查看传递给 javac 的确切命令行选项。

【讨论】:

  • 好吧,OP 让我想起了stackoverflow.com/a/46571387/1746118,我猜这个答案中漏掉了未命名的模块方面?
  • @Naman 看起来你是对的。 module-info.java 中未引​​用(或传递引用)的依赖项放在类路径中。但是,我认为这在这里并不重要,因为我们正在谈论编译时间。我无法想象这会有什么不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-23
  • 1970-01-01
  • 2014-12-17
  • 2012-10-11
  • 2017-01-14
相关资源
最近更新 更多