2010-08-08 3 views
2

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

<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. Есть ли способ включить зависимости подмодулей в сборке, не перечисляя их всех в корневом помпе? (Включая их всех в корневой pom, добавьте дополнительные неиспользуемые зависимости к дополнительным модулям, если они будут построены отдельно).

Спасибо!

ответ

3

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

Да, это то, что «топ» dependencySets.

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

Удалить "верх" 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

Понял работает. В очередной раз благодарим за помощь! – Greg

+0

@Greg Добро пожаловать. Хорошо, что вы решили пойти на сборку maven, это лучший выбор для вашего сценария. –

+0

Кстати, вам не нужно удалять верхний узел dependencySets. Если вы удалите его, зависимости основного POM не будут добавлены. – gphilip

0

Я понял это. Мне нужно включить <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> 
Смежные вопросы