2013-10-07 4 views
0

Я использую версию 2.1 из versions-maven-plugin.Как сделать Maven версии Plugin update-parent цель работать с многомодульным проектом

У меня есть дерево исходного кода, как следующее:

+-- JavaProjects 
    +-- customs-deployment-support 
     +-- pom.xml 
    +-- pom.xml  (a.k.a. base-parentpom) 
+-- Projects 
    +-- customs-template 
     +-- pom.xml 
    +-- customs-ear-template 
     +-- pom.xml 
    +-- customs-rpm-template 
     +-- pom.xml 
    +-- customs-site-template 
     +-- pom.xml 
    +-- pom.xml  (a.k.a. customs-parentpom) 

Теперь выше, <parent /> для проекта customs-template является customs-deployment-support. <parent /> для всех остальных customs-*-template проектов - base-parentpom.

Примечание: customs-parentpom это просто «агрегатор» и не является реальным родителем для любого таможенного модуля, но это объявить каждый customs-* проект как <module /> в его <modules /> разделе.

Для версии SNAPSHOT это прекрасно работает.

Теперь, я хочу перейти на артефакты versioned, где каждая подпись версии артефакта - это что-то вроде x.x.x_yyyyMMddhhmm_nn.

Итак, теперь я хочу нанять versions-maven-plugin строить customs-parentpom (или «агрегатор» pom.xml)

Я использую Дженкинс для сборки. Таким образом, я устанавливаю предварительный шаг к Джиггер версии в пределах <parent /> части каждого таможенного проекта что-то вроде:

mvn versions:update-parent 

Я хочу его найти последние добывающие артефакты (т.е. base-parentpom и customs-parentpom) доступны в Nexus.

Но он терпит неудачу с ...

[ERROR] The build could not read 4 projects -> [Help 1] 
[ERROR] 
[ERROR] The project com.etse:etse-customs-template:3.1.0-SNAPSHOT (/var/lib/jenkins/jobs/ETSE-trunk-AllCustoms/workspace/customs-template/pom.xml) has 1 error 
[ERROR]  Non-resolvable parent POM: Failure to find com.etse:etse-customs-deployment-support:pom:3.1.0-SNAPSHOT in http://repository.jboss.org/nexus/content/groups/public-jboss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss-public-repository-group has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2] 
[ERROR] 
[ERROR] The project com.etse:etse-customs-ear-template:3.1.0-SNAPSHOT (/var/lib/jenkins/jobs/ETSE-trunk-AllCustoms/workspace/customs-ear-template/pom.xml) has 1 error 
[ERROR]  Non-resolvable parent POM: Failure to find com.etse:etse-parentpom:pom:3.1.0-SNAPSHOT in http://repository.jboss.org/nexus/content/groups/public-jboss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss-public-repository-group has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 10 -> [Help 2] 
[ERROR] 
[ERROR] The project com.etse:etse-customs-rpm-template:3.1.0-SNAPSHOT (/var/lib/jenkins/jobs/ETSE-trunk-AllCustoms/workspace/customs-rpm-template/pom.xml) has 1 error 
[ERROR]  Non-resolvable parent POM: Failure to find com.etse:etse-parentpom:pom:3.1.0-SNAPSHOT in http://repository.jboss.org/nexus/content/groups/public-jboss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss-public-repository-group has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 10 -> [Help 2] 
[ERROR] 
[ERROR] The project com.etse:etse-customs-site-template:3.1.0-SNAPSHOT (/var/lib/jenkins/jobs/ETSE-trunk-AllCustoms/workspace/customs-site-template/pom.xml) has 1 error 
[ERROR]  Non-resolvable parent POM: Failure to find com.etse:etse-parentpom:pom:3.1.0-SNAPSHOT in http://repository.jboss.org/nexus/content/groups/public-jboss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss-public-repository-group has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 10 -> [Help 2] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException 
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException 

Считайте, что я никогда не хочу Дженкинс, чтобы произвести SNAPSHOT версии артефакт в приведенном выше случае. Я понимаю, что SNAPSHOT недоступен в локальном репозитории .m2. Должен ли я (действительно) нуждаться в том, чтобы плагин версий правильно решался?

Что я делаю неправильно? Можно ли даже делать то, что я пытаюсь сделать? Я хочу поделиться файлами pom.xml, если это поможет.

ответ

0

Так что это было просто недоразумение с моей стороны. Если вы используете многомодульную настройку, вам нужно убедиться, что при регистрации вашего источника, чтобы построить модуль, он должен иметь возможность отслеживать свой путь до parent (через <relativePath />).

Я проверял модуль, но не его родитель; поэтому я получал ошибки non-resolvable parent POM.

Итак, для того, чтобы реактор выполнял свою часть, вам необходимо определить все модули в агрегаторе (и/или родительском) pom.xml.

Тогда вы можете создать одну (или несколько) модулей (проектов), как так

mvn clean install --projects <project1>,<project2> --amd 
+0

Как вы справиться с ситуацией, когда вы рилизинг проектов (например: таможенно-Ухо-шаблон, позволяет предполагает его родителей является одним из проектов в JavaProjects). Предполагая, что текущая версия JavaProjects равна 0.0.4-SNAPSHOT и в шаблоне таможни-уха вы хотите получить выпуск 0.0.1, я не думаю, что использую версии: update-parent будет работать для версии 0.0.1 для проектов (поскольку он будет создавать артефакт 0.0.3 шаблона таможни-уха, чем создание файлов арфизатора выпуска 0.0.1/файлов и т.д.). http://stackoverflow.com/questions/25918593/interesting-maven-questions-pom-types-and-how-to-handle-maven-parents-uncl –