Сборочные подмодули Maven - PullRequest
       8

Сборочные подмодули Maven

2 голосов
/ 01 февраля 2012

Привет, мне нужно собрать банки из многомодульного проекта в главной директории.Давайте создадим такую ​​структуру:

MASTER(pom)
|
+-A3(pom)
| +-A1(jar)
| +-A2(jar)
+-B3(pom)
  +-B1(jar)
  +-B2(jar)

Чего я хочу добиться, так это собрать все упакованные jar-модули в MASTER.

jars/
+- A1.jar
+- A2.jar
+- B1.jar
+- B2.jar

Пока я добился только хорошего разрешения на подмодулях.(A3 и B3), создав pom.xml, например:

<modules>
 <module>../A1</module>
 <module>../A2</module>
</modules>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <descriptors>
                            <descriptor>src/main/assembly/bin.xml</descriptor>
                        </descriptors>
                    </configuration>
        </plugin>
    </plugins>
 </build>

и дескриптор сборки:

<moduleSets>
  <moduleSet>
    <includes>
      <include>org.mycompany:A1</include>
      <include>org.mycompany:A2</include>
    </includes>
    <binaries>
      <includeDependencies>false</includeDependencies>
      <outputDirectory>jars/${artifactId}</outputDirectory>
      <unpack>false</unpack>
    </binaries>
  </moduleSet>
</moduleSets>

Когда я выполняю

mvn clean package assembly:assembly

на подмодулях (A3или B3) отдельно они, кажется, прекрасно собирают свои собственные подмодули.

Я не знаю, как указать дескриптор сборки в MASTER.Схожий с дескриптором A3 и B3 не работает с ним ([ОШИБКА] необходимо указать хотя бы один файл).Я попробовал несколько дополнительных тегов, таких как includeSubModules ... все еще ничего.

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Разрешение в соответствии с обещанием (дескриптор главной сборки):

<moduleSets>
 <moduleSet>
    <binaries>
        <includeDependencies>false</includeDependencies>
        <outputDirectory>jars/${artifactId}</outputDirectory>
        <unpack>false</unpack>
    </binaries>
 </moduleSet>
</moduleSets>

, как вы можете видеть - не указывать на конкретные модули с <include>, как в A3 и B3

<includes>
 <include> 
  (...) 
 </include>
</includes>

thisдействительно странно.Тем не менее работает.

0 голосов
/ 01 февраля 2012

<module> просто говорит добавить другие pom в реакторе, но это не обеспечивает никаких зависимостей. Поэтому вы нигде не можете ссылаться на эти модули, включая дескрипторы сборки, пока не добавите зависимости.

Если вы хотите и строите, и зависите, вы должны добавить и <module> и <dependency>.

...