[英]maven idea plugin unable to resolve local dependency
我创建了一个 Maven (Java) 项目,其中包含三个 Maven 子项目模块 1-3。 module2 依赖于 module1,module3 依赖于 module2 和 module1。
在原始构建中,module1和module2是多个项目共享的公共模块,module3是合并其他两个的最终程序。 所有模块最终都编译成一个 uber-jar 分发给最终客户。
从命令行构建并运行得很好,但是在导入 IntelliJ 后,它无法正确解析本地依赖项。 似乎 IntelliJ 使用 idea:idea 目标来导入和运行 idea:idea 在我的测试用例上给出了以下 output,尽管最终构建成功,但它显然有问题解决。
将项目导入 IntelliJ 后,所有跨模块引用都显示为未解析的符号。
此测试用例的完整源代码位于: https://github.com/hutch31/maven-intellij-plugin-dep
要让 IntelliJ 找出 Maven 子项目中的这些引用,是否需要缺少/额外的步骤?
我正在使用 Maven 3.6.3 和 IntelliJ 2021.1。 IntelliJ 的集成 Maven 也是 3.6.3 版本。
编辑:我试过改变父模块的顺序,给子模块添加父标签,不影响操作。 我更新了存储库以反映原始代码的 state,其中 module3 具有父标签,但 module1 和 module2 没有(因为它们是通用代码)。
在命令行上,我使用“mvn clean test”构建和运行。 我还添加了 Maven 'compile' 配置,尽管报告了错误,但它仍然可以正确构建。
$ mvn idea:idea
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] mod1 [jar]
[INFO] mod2 [jar]
[INFO] mod3 [jar]
[INFO] Cable Test Studio [pom]
[INFO]
[INFO] -------------------------< org.ghutchis:mod1 >--------------------------
[INFO] Building mod1 1.0-SNAPSHOT [1/4]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> maven-idea-plugin:2.2.1:idea (default-cli) > generate-resources @ mod1 >>>
[INFO]
[INFO] <<< maven-idea-plugin:2.2.1:idea (default-cli) < generate-resources @ mod1 <<<
[INFO]
[INFO]
[INFO] --- maven-idea-plugin:2.2.1:idea (default-cli) @ mod1 ---
[INFO]
[INFO] -------------------------< org.ghutchis:mod2 >--------------------------
[INFO] Building mod2 1.0-SNAPSHOT [2/4]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> maven-idea-plugin:2.2.1:idea (default-cli) > generate-resources @ mod2 >>>
[INFO]
[INFO] <<< maven-idea-plugin:2.2.1:idea (default-cli) < generate-resources @ mod2 <<<
[INFO]
[INFO]
[INFO] --- maven-idea-plugin:2.2.1:idea (default-cli) @ mod2 ---
[WARNING] An error occurred during dependency resolution of the following artifact:
org.ghutchis:mod21.0-SNAPSHOT
Caused by: Missing:
----------
1) org.ghutchis:mod1:jar:1.0-SNAPSHOT
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=org.ghutchis -DartifactId=mod1 -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=org.ghutchis -DartifactId=mod1 -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) org.ghutchis:mod2:jar:1.0-SNAPSHOT
2) org.ghutchis:mod1:jar:1.0-SNAPSHOT
----------
1 required artifact is missing.
for artifact:
org.ghutchis:mod2:jar:1.0-SNAPSHOT
from the specified remote repositories:
central (https://repo.maven.apache.org/maven2, releases=true, snapshots=false)
[INFO]
[INFO] -------------------------< org.ghutchis:mod3 >--------------------------
[INFO] Building mod3 1.0-SNAPSHOT [3/4]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> maven-idea-plugin:2.2.1:idea (default-cli) > generate-resources @ mod3 >>>
[INFO]
[INFO] <<< maven-idea-plugin:2.2.1:idea (default-cli) < generate-resources @ mod3 <<<
[INFO]
[INFO]
[INFO] --- maven-idea-plugin:2.2.1:idea (default-cli) @ mod3 ---
[WARNING] An error occurred during dependency resolution of the following artifact:
org.ghutchis:mod31.0-SNAPSHOT
Caused by: Missing:
----------
1) org.ghutchis:mod2:jar:1.0-SNAPSHOT
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=org.ghutchis -DartifactId=mod2 -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=org.ghutchis -DartifactId=mod2 -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) org.ghutchis:mod3:jar:1.0-SNAPSHOT
2) org.ghutchis:mod2:jar:1.0-SNAPSHOT
2) org.ghutchis:mod1:jar:1.0-SNAPSHOT
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=org.ghutchis -DartifactId=mod1 -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=org.ghutchis -DartifactId=mod1 -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) org.ghutchis:mod3:jar:1.0-SNAPSHOT
2) org.ghutchis:mod1:jar:1.0-SNAPSHOT
----------
2 required artifacts are missing.
for artifact:
org.ghutchis:mod3:jar:1.0-SNAPSHOT
from the specified remote repositories:
central (https://repo.maven.apache.org/maven2, releases=true, snapshots=false)
[INFO]
[INFO] ------------------------< org.ghutchis:parent >-------------------------
[INFO] Building Cable Test Studio 1.0-SNAPSHOT [4/4]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] >>> maven-idea-plugin:2.2.1:idea (default-cli) > generate-resources @ parent >>>
[INFO]
[INFO] <<< maven-idea-plugin:2.2.1:idea (default-cli) < generate-resources @ parent <<<
[INFO]
[INFO]
[INFO] --- maven-idea-plugin:2.2.1:idea (default-cli) @ parent ---
[INFO] jdkName is not set, using [java version1.8.0_265] as default.
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Cable Test Studio 1.0-SNAPSHOT:
[INFO]
[INFO] mod1 ............................................... SUCCESS [ 0.231 s]
[INFO] mod2 ............................................... SUCCESS [ 0.021 s]
[INFO] mod3 ............................................... SUCCESS [ 0.021 s]
[INFO] Cable Test Studio .................................. SUCCESS [ 0.087 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.750 s
[INFO] Finished at: 2021-04-20T10:28:53+01:00
[INFO] ------------------------------------------------------------------------
我相信我已经弄清楚了测试用例中的问题,即 mod1/mod2/mod3 的 package 规范与文件路径不匹配。 将文件从 src/main/java/org/ghutchis/module1.java 移动到 src/main/java/org/ghutchis/mod1/module1.java 修复了 IntelliJ 的测试用例的构建问题(遗憾的是,不是)。
更新后的 Java 代码已推送至 Github 进行检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.