Скопируйте все зависимости maven из детей pom в каталог

Я пытаюсь скопировать все зависимости проекта и его подмодулей в определенную папку (скажем, parent/target/lib)

проект примерно такой:

parent
|- module1
|- module2    
|- module3
   |- module3.1
   |- module3.2
|- module4

в моем понимании единственный способ сделать это - использовать зависимость от копирования maven в каждом подмодуле следующим образом:

<execution>
    <id>copy-dependencies</id>
    <phase>package</phase>
    <goals>
        <goal>copy-dependencies</goal>
    </goals>
    <configuration>
        <includeScope>runtime</includeScope>
        <outputDirectory>${parent.dir}/target/lib</outputDirectory>
        <overWriteReleases>false</overWriteReleases>
        <overWriteSnapshots>false</overWriteSnapshots>
        <overWriteIfNewer>true</overWriteIfNewer>
        <excludeGroupIds>xerces</excludeGroupIds>
        <excludeArtifactIds>junit,testng,easymock</excludeArtifactIds>
    </configuration>
</execution>

Однако у меня есть несколько проблем с этим:

  1. папка lib будет содержать все версии артефакта (мне нужны только последние)
  2. для каждого правила включения/исключения нужно обновить все помпы (их много)

Разве нет чего-то, что работает вместе с dependency:list, чтобы получить все зависимости, сохранить последние и скопировать их в мою папку /lib?


person phury    schedule 16.07.2014    source источник
comment
Какие ошибки вы получаете при запуске?   -  person Ale Sequeira    schedule 16.07.2014
comment
Не удалось выполнить цель org.apache.maven.plugins:maven-dependency-plugin:2.4:copy-dependencies (copy-dependencies) в модуле проекта 3: ошибка копирования артефакта из C:\Users\release\.m2\repository\net\ jcip\jcip-annotations\1.0\jcip-annotations-1.0.jar в C:\dev\parent\target\lib\jcip-annotations-1.0.jar: не удалось скопировать полное содержимое из C:\Users\release\.m2 \repository\net\jcip\jcip-annotations\1.0\jcip-annotations-1.0.jar в C:\parent\target\lib\jcip-annotations-1.0.jar Я получаю это для нескольких зависимостей случайным образом. Это к проблеме №1   -  person phury    schedule 16.07.2014
comment
Странно, вы пытались добавить -X -e, чтобы увидеть больше деталей?   -  person Ale Sequeira    schedule 16.07.2014
comment
это, вероятно, поврежденная банка или файл заблокирован .... проблема в том, что это происходит случайным образом каждый раз, когда я запускаю. Я ищу другое решение, чтобы делать то, что я делаю   -  person phury    schedule 16.07.2014


Ответы (1)


В итоге я использовал плагин сборки в новом подпроекте следующим образом:

parent
|- module1
|- module2    
|- module3
   |- module3.1
   |- module3.2
|- module4
|- assembly-module

Модуль сборки вызывает плагин maven-assembly (pom.xml):

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptor>src/assembly/bin.xml</descriptor>
                <finalName>module-assembly</finalName>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

наконец, мой файл сборки выглядит так (assembly-module/src/assembly/bin.xml)

<id>bin</id>
<formats>
    <format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<dependencySets>
    <dependencySet>
        <outputDirectory>lib</outputDirectory>
        <scope>runtime</scope>
        <useProjectArtifact>false</useProjectArtifact>
        <includes/>
        <excludes>
            <exclude>org.eclipse.jdt:core</exclude>
        </excludes>
    </dependencySet>
</dependencySets>
person phury    schedule 23.07.2014