Maven Eclipse 插件错误?无法将工作区内依赖项 JAR 自动添加到 运行 配置模块路径
Maven Eclipse plugin bug? failing to auto-add in-workspace dependency JAR to Run Configuration module-path
下面是我的情况的快速 运行总结:
我有两个 Java 项目:一个在 Java 8 中(因此不是模块化的),另一个在 Java 11 中是模块化的。
modular/not-modular 问题可能不相关,但为了清楚起见,我已经说明了。
作为参考,Java 8 是我制作的游戏库,Java 11 是我制作的游戏实现。
我需要从我的 Java 11 游戏项目中引用 Java 8 库。
这两个项目都是 Maven 项目,我在游戏的 POM 文件中定义了我的依赖项。
我正在使用最新版本的 Eclipse (2020-03 4.15.0) 和 Maven 3.6.3 Java 版本 11.0.7 OracleJDK。
我的问题:
我的理解是我的Java8库项目变成了自动模块。将它添加到我的 Java 11 游戏项目模块信息文件中(带有关于名称不稳定的警告,但没问题)并且我可以在 Eclipse 中毫无问题地编译我的游戏项目代码。
当我尝试 运行 游戏时,我得到 Module <my-library> not found, required by <my-game>
。现在,由于 Maven 正在管理依赖项,它应该可以正常工作。
我怎样才能让我的游戏达到 运行?
我可以用三种方法修复它...
首先,我可以简单地将库项目的 JAR 文件(在它的目标文件夹中)添加到我的游戏项目的 运行 配置模块路径中。
其次,我可以从我的工作区中删除库项目。这意味着 Maven 然后从本地 m2 存储库获取 JAR(它已安装 mvn install
)。在这种情况下,Maven 会自动将 JAR 正确添加到 运行 配置模块路径。
第三,我可以在它的 POM 文件中更改库项目的版本,就像选项二一样,这意味着它不再满足依赖关系,然后 Maven 在本地 m2 存储库中查找 JAR。
但是...
所有这三个选项在我看来都是不必要的。这感觉就像是 Maven 无法将工作区内项目依赖项添加到 Eclipse 运行 配置中的模块路径的错误。
公平地说,它是一个 Maven Eclipse 插件功能,可以自动检测工作区中的一个项目何时是依赖项,并使用 "live" 版本而不是 m2 回购版本。这对于并行开发库的情况非常方便。
但是在这个错误被修复之前(或者除非它不是错误并且我遗漏了什么),这让我很沮丧。我发布这篇文章是希望能帮助可能面临同样问题的其他人。
下面是我的情况的快速 运行总结:
我有两个 Java 项目:一个在 Java 8 中(因此不是模块化的),另一个在 Java 11 中是模块化的。
modular/not-modular 问题可能不相关,但为了清楚起见,我已经说明了。
作为参考,Java 8 是我制作的游戏库,Java 11 是我制作的游戏实现。
我需要从我的 Java 11 游戏项目中引用 Java 8 库。
这两个项目都是 Maven 项目,我在游戏的 POM 文件中定义了我的依赖项。
我正在使用最新版本的 Eclipse (2020-03 4.15.0) 和 Maven 3.6.3 Java 版本 11.0.7 OracleJDK。
我的问题:
我的理解是我的Java8库项目变成了自动模块。将它添加到我的 Java 11 游戏项目模块信息文件中(带有关于名称不稳定的警告,但没问题)并且我可以在 Eclipse 中毫无问题地编译我的游戏项目代码。
当我尝试 运行 游戏时,我得到 Module <my-library> not found, required by <my-game>
。现在,由于 Maven 正在管理依赖项,它应该可以正常工作。
我怎样才能让我的游戏达到 运行?
我可以用三种方法修复它...
首先,我可以简单地将库项目的 JAR 文件(在它的目标文件夹中)添加到我的游戏项目的 运行 配置模块路径中。
其次,我可以从我的工作区中删除库项目。这意味着 Maven 然后从本地 m2 存储库获取 JAR(它已安装 mvn install
)。在这种情况下,Maven 会自动将 JAR 正确添加到 运行 配置模块路径。
第三,我可以在它的 POM 文件中更改库项目的版本,就像选项二一样,这意味着它不再满足依赖关系,然后 Maven 在本地 m2 存储库中查找 JAR。
但是...
所有这三个选项在我看来都是不必要的。这感觉就像是 Maven 无法将工作区内项目依赖项添加到 Eclipse 运行 配置中的模块路径的错误。
公平地说,它是一个 Maven Eclipse 插件功能,可以自动检测工作区中的一个项目何时是依赖项,并使用 "live" 版本而不是 m2 回购版本。这对于并行开发库的情况非常方便。
但是在这个错误被修复之前(或者除非它不是错误并且我遗漏了什么),这让我很沮丧。我发布这篇文章是希望能帮助可能面临同样问题的其他人。