Как заставить Maven находить одноуровневые модули при запуске mvn в каталоге подмодулей? - PullRequest
1 голос
/ 20 мая 2011

Например, у меня есть игровой проект:

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 пытается найти зависимости sprite, ai из репозиториев maven вместо ../../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 / без проблем.

Ответы [ 2 ]

1 голос
/ 15 августа 2013

Насколько я понимаю, вы не можете сделать это в Maven (это инструмент для сборки, а не IDE).Я предлагаю вам сделать одно из следующего:

  1. Использовать maven-compiler-plugin в версии 3.1.Он поставляется с инкрементным компилятором, который пропустит компиляцию, если ничего не произошло.Это значительно ускорит вашу работу.
  2. Сборка только тех модулей, с которыми вы работали, с использованием опции -pl.

http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html http://java.dzone.com/articles/5-maven-tips

Я также рекомендую какой-нибудьудаленного рабочего стола или ssh-туннеля, чтобы вы могли использовать Eclipse / IntelliJ / NetBeans.Они предоставляют именно то, что вам нужно.

0 голосов
/ 24 мая 2011

Если вы загрузите свой пом высокого уровня из IntelliJ, он будет постоянно «устанавливать» все модули для вас.Т.е. выясняется, что у вас есть зависимость моментального снимка, которая уже находится в реакторе Maven, поэтому она не беспокоится о вашем локальном хранилище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...