Зависимость сборки mavenSet пусто - PullRequest
2 голосов
/ 10 сентября 2011

Я пытаюсь настроить то, что я считаю простой сборкой, беря фляги из нескольких модулей и помещая их в определенную папку внутри zip.Полученная сборка должна выглядеть следующим образом:
ir4job \
ir4job \ app_lib \
ir4job \ app_lib \ jar файлы идут сюда

Но maven выдает мне пустой zip-файл, когда сборкасгенерировано

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

<assembly>
  <!-- ir4job folder contents -->
  <id>ir4job-app</id>
  <formats>
    <format>zip</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>

  <moduleSets>
    <moduleSet>
      <binaries>
        <dependencySets>
          <dependencySet>
            <outputDirectory>ir4job/app_lib</outputDirectory>
          </dependencySet>
        </dependencySets>
      </binaries>
    </moduleSet>
  </moduleSets>
</assembly>

файл pom:

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>glb</groupId>
  <artifactId>Release</artifactId>
  <packaging>pom</packaging>
  <name>release</name>
  <version>1.0</version>

  <parent>
.... parent info ....
  </parent>

  <dependencies>
... various dependencies ...
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>

        <configuration>
          <appendAssemblyId>false</appendAssemblyId>
          <descriptors>
            <descriptor>ir4job-app.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>do-release</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>
</project>

Я почти уверен, что упустил что-то простое здесь ... что это?

1 Ответ

1 голос
/ 09 декабря 2011

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

<assembly>
    <id>ir4job-app</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>

    <fileSets>
        <fileSet>
            <directory>path/to/folder/relative/to/project/root/ir4job/app_lib</directory>
            <outputDirectory>ir4job/app_lib</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

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

...
<includeBaseDirectory>true</includeBaseDirectory>
....
<fileSet>
    <directory>path/to/folder/relative/to/project/root/ir4job</directory>
    <includes>
        <include>**/*.jar</include>
    </includes>
</fileSet>
...

edit # 1:

Рабочий пример использования подключаемого модуля maven-dependency-plugin для копирования зависимостей в папку:

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies-for-assembly</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/libs</outputDirectory>
                        <stripVersion>true</stripVersion>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Примечание: вы также можете ограничить копируемые зависимости, используя такие параметры конфигурации, как

...
<configuration>
    ...
    <includeGroupIds>com.mycompany,org.springframework,org.hibernate</includeGroupIds>
</configuration>
...

Вы также можете ограничить artifactId, классификатор и т. Д.


edit # 2:

Решение

Возможно, лучшим ответом будет просто поднять ваш тег dependencySet на пару уровней, как в:

<assembly>
    <!-- ir4job folder contents -->
    <id>ir4job-app</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>

    <dependencySets>
        <dependencySet>
            <outputDirectory>ir4job/app_lib</outputDirectory>
        </dependencySet>
    </dependencySets>
 </assembly>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...