例如,我有一个游戏项目:
superegg/
|- game/
| `- pom.xml -> (a lot of jars.)
|- ai/
| `- pom.xml
|- sprite/
| |- egg/
| | `- pom.xml -> sprite
| |- badguy/
| | `- pom.xml -> sprite, ai
| `- pom.xml -> game
` pom.xml
(此处-->
表示依赖于)
所有子模块都是SNAPSHOT版本,它们没有安装,也没有部署。
现在,我想在badguy/
中执行某些操作:
.../sprite/badguy/ $ mvn exec:java ...
但是,maven尝试从maven存储库中找到依赖项sprite, ai
,而不是../../game
和../../ai
。
如何让Maven解决项目目录中的子模块依赖关系?
我没有安装它们,因为子模块太多(虽然这里没有列出),完全编译/安装过程需要很长时间)。我也试过但没有成功:
superegg/sprite/badguy/ $ mvn --reactor dependency:build-classpath
[INFO] Cannot execute mojo: build-classpath. It requires a project with an existing pom.xml, but the build is not using one.
superegg/ $ mvn -pl sprite/badguy dependency:build-classpath
Missing dependencies: ...
superegg/ $ mvn --reactor -pl sprite/badguy dependency:build-classpath
Project 'some-module' is duplicated in the reactor
顺便说一句,我可以从superegg构建整个项目/没问题。
答案 0 :(得分:1)
据我所知,你不能在Maven中做到这一点(它是一个构建工具,而不是IDE)。我建议你做以下其中一项:
http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html http://java.dzone.com/articles/5-maven-tips
我进一步推荐某种远程桌面或ssh隧道,以便您可以使用Eclipse / IntelliJ / NetBeans。它们提供您所需要的。
答案 1 :(得分:0)
如果您从IntelliJ中加载顶级pom,它将不断为您安装所有模块。即你知道你有一个已经在Maven反应堆中的快照依赖,所以它不会去你的本地存储库。