Почему Maven спрашивает меня о конфигурации дистрибутива в каждом модуле при развертывании многомодульного сайта? - PullRequest
1 голос
/ 17 декабря 2010

Мой многомодульный проект Maven выглядит так:

/foo
  pom.xml
  /foo-parent
  /foo-core
  /foo-something
  /src
    /site

Обратите внимание, что foo не является родительским проектом, а foo-parent (для foo-core и foo-something). foo не наследуется от foo-parent. Конфигурация сайта хранится в foo. Все остальные подмодули ничего не знают о сайте проекта и не имеют <distributionManagement>. Сайт mvn работает отлично, и теперь я работаю mvn site-deploy:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:2.0.1:deploy
(default-deploy) on project foo-parent: Missing site information in the 
distribution management element in the project.. -> [Help 1]

Maven пытается site-deploy каждый субмодуль в отдельности ?? Это правильное поведение?

1 Ответ

3 голосов
/ 20 декабря 2010

Что касается вопроса о конфигурации вашего дистрибутива:

Maven не позволяет дочернему модулю быть родительским pom верхнего уровня pom.xml. Это способ, которым Maven говорит вам, что вы не структурируете свой проект для соглашения.

Вам необходимо сделать pom.xml для foo родительским pom для всех модулей всего проекта.

Для обхода того, что вы пытаетесь структурировать, используйте модули, которые зависят от foo-parent, перечислите pom.xml foo-parent в родительском разделе их pom. Затем поместите foo-parent список foo's pom.xml в его родительский раздел. Вы можете избавиться от того, что foo-parent будет родительским pom.xml для всех остальных модулей, потому что все модули являются одноранговыми по компоновке структуры.

Верхний уровень pom.xml должен содержать только необходимую информацию для совместного использования всеми модулями.

Что касается вопроса о развертывании вашего сайта:

Maven пытается развернуть каждый сайт отдельно для каждого модуля из-за настроенного вами верхнего уровня /src/site/site.xml. Но это также отчасти из-за того, что вы, вероятно, запускаете site-deploy с верхнего уровня (foo). Если вам нужна документация только для foo-parent, запустите site-deploy только для foo-parent. Однако вы не можете получить какую-либо документацию для других модулей, связанных с документацией сайта foo-parent.

P.S. Лучше почитайте о Maven 3. В генерацию документации сайта будут внесены некоторые существенные изменения!

РЕДАКТИРОВАТЬ: Ссылки для справки:

...