Maven Assembly Plugin - Включить зависимости от подмодулей? - PullRequest
2 голосов
/ 09 августа 2010

Я пытаюсь настроить сборочный плагин для большого многомодульного проекта. Цель сейчас - просто собрать все мои артефакты в каталог. Вот мой дескриптор:

    <assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>Install-Package</id>
<formats>
    <format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
    <dependencySet>
        <unpack>false</unpack>
        <scope>runtime</scope>
        <outputDirectory>dependencies</outputDirectory>
    </dependencySet>
</dependencySets>
<moduleSets>
    <moduleSet>
        <binaries>
            <unpack>false</unpack>
        </binaries>
    </moduleSet>
</moduleSets>

В настоящее время это копирует все мои артефакты в каталог сборки. Все идет нормально. Проблема заключается в том, что папка зависимостей содержит только зависимости, которые перечислены в основном файле pom. Есть ли способ включить зависимости подмодулей в сборку, не перечисляя их все в корневом разделе? (Включение их всех в корневую помпу добавит дополнительные неиспользуемые зависимости к субмодулям, если они будут построены отдельно).

Спасибо!

Ответы [ 2 ]

3 голосов
/ 09 августа 2010

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

Да, это то, что делает "top" dependencySets.

Есть ли способ включить зависимости подмодулей в сборку, не перечисляя их все в корневом pom?

Удалить "top" dependencySets и объявитьодин под binaries элементом вашего moduleSet:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
  <id>Install-Package</id>
  <formats>
    <format>dir</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <moduleSets>
    <moduleSet>
      <binaries>
        <unpack>false</unpack>
        <dependencySets>
          <dependencySet>
            <unpack>false</unpack>
            <scope>runtime</scope>
            <outputDirectory>dependencies</outputDirectory>
          </dependencySet>
        </dependencySets>
      </binaries>
    </moduleSet>
  </moduleSets>
</assembly>
0 голосов
/ 09 августа 2010

Я понял это.Мне нужно было включить <dependencySet> элемент внутри моего <moduleSet> примерно так:

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>Install-Package</id>
    <formats>
        <format>dir</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <moduleSets>
        <moduleSet>
            <binaries>
                <unpack>false</unpack>
                <dependencySets>
                    <dependencySet>
                        <unpack>false</unpack>
                        <scope>compile</scope>
                        <outputDirectory>dependencies</outputDirectory>
                    </dependencySet>
                </dependencySets>
            </binaries>
        </moduleSet>
    </moduleSets>
</assembly>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...