Модуль: ссылка на другой модуль из дескриптора - PullRequest
4 голосов
/ 17 сентября 2009

Мой дескриптор сборки для модуля (APP1):

  <?xml version="1.0" encoding="UTF-8"?>
  <assembly>
  <id>report</id>
    <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <moduleSets>
    <moduleSet>
      <includes>
    <include>*-APP2</include>[trying to refer to another module ie module-APP2]
      </includes>
      <sources>
    <fileSets>
      <fileSet>
        <directory>/</directory>
        <includes>
          <include>**/target</include>
        </includes>
      </fileSet>
    </fileSets>
    <excludeSubModuleDirectories>false</excludeSubModuleDirectories>
    <outputDirectoryMapping>/</outputDirectoryMapping>
      </sources>
    </moduleSet>
  </moduleSets>
 </assembly>

Когда я запускаю команду mvn install, я получаю

[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o  '*-APP2'

где я ошибся?

Я изменил как:

<?xml version="1.0" encoding="UTF-8"?><assembly>
  <id>report</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <moduleSets>
    <moduleSet>
      <includes>
    <include>sampleMaven:module-APP2</include>
      </includes>
      <sources>
    <fileSets>
      <fileSet>
        <directory>/</directory>
        <includes>
          <include>target/*</include>
        </includes>
      </fileSet>
    </fileSets>
    <excludeSubModuleDirectories>false</excludeSubModuleDirectories>
    <outputDirectoryMapping>/</outputDirectoryMapping>
      </sources>
    </moduleSet>
  </moduleSets>
</assembly>

все еще получает:

[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o  'sampleMaven:module-APP2'

Обновлено 18 сентября: Главный проект pom.xml ->

http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 sampleMaven ана 0.0.1-SNAPSHOT П

APP1

<module>APP2</module>

2) Для APP1 pom.xml ->

   <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

ана sampleMaven 0.0.1-SNAPSHOT 4.0.0 sampleMaven APP1 APP1 0.0.1-SNAPSHOT П
../APP2

<build>
 <plugins>
    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2-beta-3</version>
    <executions>
    <execution>
      <id>assemblyone</id>
      <phase>compile</phase>
      <goals>
            <goal>single</goal>
      </goals>
      <configuration>
        <finalName>App1</finalName>
        <appendAssemblyId>false</appendAssemblyId>
        <descriptors>
          <descriptor>${basedir}/src/main/resources/assemblies/report.xml</descriptor>
        </descriptors>
      </configuration>
    </execution>
     </executions>
    </plugin>
  </plugins>
</build> 
</project> ...

3) Дескриптор сборки ->

доклад яс ложный

 <sources>
  <fileSets>
    <fileSet>
      <directory>/</directory>
      <includes>
       <include>target/*</include>
      </includes>
    </fileSet>
  </fileSets>
  <excludeSubModuleDirectories>false</excludeSubModuleDirectories>
  <outputDirectoryMapping>/</outputDirectoryMapping>
 </sources>
 <binaries>
   <outputDirectory>
      ${module.artifactId}-${module.version}
   </outputDirectory>
   <dependencySets>
      <dependencySet/>
   </dependencySets>
 </binaries>
</moduleSet>

При запуске gettting -> Ошибка трассировки стека:

org.apache.maven.project.DuplicateProjectException: проект 'sampleMaven: APP2' дублируется в реакторе

Ответы [ 2 ]

3 голосов
/ 17 сентября 2009

Обновление: в книге Maven есть раздел на , включающий наборы модулей в сборках. Подход в вашем примере устарел. Существует также проблема с порядком сборки при определении moduleSets от родителя. Родитель должен быть построен первым, чтобы потомок мог наследовать от него, но потомок должен быть построен так, чтобы родитель мог включить его в свою сборку. Следующий подход обращается к этому циклу.

Определите родительский pom, который ссылается на модуль сборки.

<?xml version="1.0" encoding="UTF-8"?>
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>name.seller.rich</groupId>
  <artifactId>test-parent</artifactId>
  <packaging>pom</packaging>
  <version>1.0.0</version>
  <modules>
    <module>test-assembly</module>
  </modules>
  <dependencies>
</project>

В модуле сборки определите модуль с относительным путем к фактическому модулю (ам) приложения и определите конфигурацию модуля сборки:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>name.seller.rich</groupId>
  <artifactId>test-assembly</artifactId>
  <packaging>pom</packaging>
  <version>1.0.0-SNAPSHOT</version>
  <modules>
    <module>../my-app2</module>
  </modules>
  <build>
    <plugins>
      <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2-beta-4</version>
    <executions>
      <execution>
        <id>assembly</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <finalName>App1</finalName>
          <appendAssemblyId>false</appendAssemblyId>
          <descriptors>
            <descriptor>src/main/assembly/my-assembly.xml</descriptor>
          </descriptors>
        </configuration>
      </execution>
    </executions>
      </plugin>
    </plugins>
  </build>
</project>

и my-assembly.xml определяется следующим образом:

<?xml version="1.0" encoding="UTF-8"?><assembly>
  <id>my-assembly</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <moduleSets>  
    <moduleSet>
      <binaries>
        <outputDirectory>
          ${module.artifactId}-${module.version}
        </outputDirectory>
        <dependencySets>
          <dependencySet/>
        </dependencySets>
      </binaries>
    </moduleSet>
  </moduleSets>
</assembly>

Построение родительского модуля приведет к порядку сборки:

  1. тест-родитель
  2. мой-app2
  3. тест-сборка

Итак, когда сборка собирается в пакет, my-app2 собирается и становится доступной для включения. Декларация двоичных файлов будет включать в себя банки.

2 голосов
/ 23 ноября 2012

Я все еще ищу решение для создания многоцелевого приложения, и я думаю, что я почти на месте !!! : -)

Хитрость в том, чтобы создать отдельный модуль и не добавлять его в родительский модуль, потому что вы хотите собрать родительский модуль (который собирает все модули), а затем вызвать сборку.

Я получил zip-файл, который содержит все, что мне нужно, только исполняемый файл jar не включает исходники ... но я постараюсь выяснить это как можно скорее. Если я смогу заставить это работать, я вставлю решение здесь:)

Мир

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...