Execute multiple maven project from MS bat file?

I need to build 3 independent maven projects using a build.bat file (because of tycho aggregation is not an option - see comments on romaintaz answer). I have tried (executed from the build folder - see below):

cd ../projectA
mvn clean install -U
cd ..
cd ../projectB
mvn clean install -U
cd ..
cd ../projectC
mvn clean install -U

where the folder structure of the projects are:

build
  |--> build.bat

projectA
  |--> pom.xml

projectB
  |--> pom.xml

projectC
  |--> pom.xml

but only projectA is build projectB and projectC are skipped. Any ideas on how to modify the above batfile so the following project is build if the previous was build successfully?

25
задан Jan 15 March 2012 в 23:05
поделиться

2 ответа

Почему бы вам не попробовать создать родительский проект ?

Похоже, у вас следующая структура:

someDirectory
  +- projectA
      +- pom.xml
  +- projectB
      +- pom.xml
  +- projectC
      +- pom.xml

Просто создайте pom.xml в корневом каталоге (в моем примере someDirectory) и определите список модулей, которые представляют собой projectA, projectB и projectC. Эта помпа будет выглядеть так:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>my.company</groupId>
    <artifactId>my-aggregation-project</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>

    <modules>
        <module>projectA</module>
        <module>projectB</module>
        <module>projectC</module>
    </modules>
</project>

отмечает:

  • Не забудьте установить <packaging>pom</packaging>, так как это не «настоящий» Java-проект.
  • Имя module должно совпадать с именем каталога, в котором размещен субмодуль.

Теперь, выполнив это, при запуске команды Maven в корневом каталоге Maven автоматически запустит эту команду на всех модулях. Поэтому, если вы просто запустите mvn clean install в корневом каталоге, он запустит эту команду в трех ваших модулях.

Важное примечание: Я говорю здесь о функции агрегации в Maven. Не наследование . Это означает, что не требуется, чтобы каждый модуль имел корневой проект в качестве родительского.

3
ответ дан 28 November 2019 в 18:26
поделиться

Я думаю, что использование% ERRORLEVEL% завершит + ответ FrVaBe. Первоначально из Кунал

 call mvn -f ProjectA\pom.xml clean install  if not "%ERRORLEVEL%" == "0" goto error

 call mvn -DskipTests=true -f ProjectC\pom.xml clean install if not "%ERRORLEVEL%" == "0" goto error

 exit

 :error @echo Build Failed pause
1
ответ дан 28 November 2019 в 18:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: