построить несколько модулей несколько раз в родительском pom

Есть несколько приложений, которые необходимо собрать и собрать из нескольких модулей.

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

root
  parent/
     pom.xml
  moduleA/
     pom.xml
  moduleB/
     pom.xml
  moduleC/
     pom.xml

Например, приложению «profile-1» потребуется подмножество существующих модулей, которые нужно собрать и собрать вместе в виде tar-шарика. Tar будет содержать несколько jar-файлов и различных файлов конфигурации, извлеченных из целевого / подмодулей.

Я использую сценарий оболочки, вызываемый с помощью exec-maven-plugin, чтобы собрать tar.

Проблема, с которой я столкнулся, заключается в том, что в одном приложении мне нужно создавать один и тот же модуль несколько раз, но с разными параметрами maven.

Как лучше всего это сделать?

<profiles>
        <profile>
            <id>profile-1</id>
            <modules>
                <module>../moduleA</module>
                <module>../moduleB</module>
                <!-- <module>../moduleC</module> -->
            </modules>
            <properties>
                <global.version>0.0.1-SNAPSHOT</global.version>
            </properties>
            <build>
                <!-- use maven exec plugin to run a shell script which generates the tar ball picking jars and config files from different modules target dirs -->
                <plugins>
                </plugins>
            </build>
        <profile>
</profiles>

Образец подмодуля pom

<groupId>com.test</groupId>
    <artifactId>moduleC</artifactId>
    <packaging>bundle</packaging>
    <version>${global.version}</version>

    <name>test :: ${project.artifactId} :: ${name} </name>


    <parent>
      <groupId>com.test</groupId>
      <artifactId>parent</artifactId>
      <version>${global.version}</version>
      <relativePath>../parent</relativePath>
    </parent>

Что я пробовал:
1) Могу ли я разделить на несколько профилей и вызывать их как -Pprofile-1, profile-2?
Это не сработало для меня, но я бы делал что-то не так.

2) Имейте другой сценарий оболочки, который имеет командную строку mvn для создания модуля C различными способами.
- Несмотря на то, что я передаю "-Dglobal_version", модуль C, запускаемый из командной строки mvn, похоже, не находит родителя в репозиторий.

Я попытался выполнить сборку "-N", чтобы поместить родительский pom в репозиторий перед сборкой приложения, но это не помогло.


person user127091    schedule 08.02.2016    source источник
comment
Я использую сценарий оболочки, вызываемый с помощью exec-maven-plugin, чтобы собрать tar. Это серьезный признак того, что вы где-то делаете что-то не так. Сборки обычно выполняются с использованием maven-assembly-plugin. Почему у вас так много профилей? Это тоже запах в вашей сборке.   -  person Tunaki    schedule 09.02.2016
comment
я могу использовать плагин сборки. Мне нужно собрать и упаковать разные приложения, которые собираются с использованием различных комбинаций подмодулей. Но как я могу создать один и тот же модуль несколько раз, передав разные параметры maven?   -  person user127091    schedule 09.02.2016


Ответы (1)


Лучший способ:

mvn clean install --projects moduleA, moduleB
mvn clean install --projects moduleB, moduleC

Вы не можете запускать несколько сборок с maven (см. Этот вопрос о стеке)

person Gabriel    schedule 21.09.2017