Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在子模块目录下运行mvn时,如何让Maven找到同级模块?_Maven - Fatal编程技术网

在子模块目录下运行mvn时,如何让Maven找到同级模块?

在子模块目录下运行mvn时,如何让Maven找到同级模块?,maven,Maven,例如,我有一个游戏项目: superegg/ |- game/ | `- pom.xml -> (a lot of jars.) |- ai/ | `- pom.xml |- sprite/ | |- egg/ | | `- pom.xml -> sprite | |- badguy/ | | `- pom.xml -> sprite, ai | `- pom.xml -> game ` po

例如,我有一个游戏项目:

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
(此处
-->
表示取决于)

所有子模块均为快照版本,未安装,也未部署

现在,我想在
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/毫无问题地构建整个项目。

如果您从IntelliJ内部加载顶级pom,它将持续为您“安装”所有模块。也就是说,你有一个已经在Maven reactor中的快照依赖项,因此它不需要麻烦去你的本地存储库。

如果你从IntelliJ中加载顶级pom,它将继续为你“安装”所有模块。也就是说,你有一个已经在Maven reactor中的快照依赖项,因此它不需要麻烦去你的本地存储库。

据我所知,你不能在Maven中这样做(它是一个构建工具,而不是IDE)。我建议您执行以下操作之一:

  • 使用版本3.1中的maven编译器插件。它附带了一个增量编译器,如果什么都没有发生,它将跳过编译。这将大大加快你的工作速度
  • 使用-pl选项仅构建您使用的那些模块

  • 我进一步推荐某种远程桌面或ssh隧道,以便您可以使用Eclipse/IntelliJ/NetBeans。它们只提供您所需要的。

    据我所知,您不能在Maven中这样做(它是一个构建工具,而不是IDE)。我建议您执行以下操作之一:

  • 使用版本3.1中的maven编译器插件。它附带了一个增量编译器,如果什么都没有发生,它将跳过编译。这将大大加快你的工作速度
  • 使用-pl选项仅构建您使用的那些模块

  • 我进一步推荐某种远程桌面或ssh隧道,以便您可以使用Eclipse/IntelliJ/NetBeans。它们提供您所需要的。

    IntelliJ很棒,但我不能在ssh/telnet中运行。IntelliJ很棒,但我不能在ssh/telnet中运行。