Упаковать библиотеку и все ее зависимости в одну папку, а другие зависимости в отдельную папку - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть проект Maven.Я использую maven-assembly-plugin для создания zip-файлов со всеми зависимостями модуля, упакованными в него.Необходимо создать zip со следующей структурой:

/my-libs
/other-libs

В my-libs необходимо упаковать зависимости от my-lib зависимость + все ее переходные зависимости.В other-libs необходимо упаковать все другие зависимости от текущего модуля maven.

В основном мне нужно условно выбрать целевую папку:

if (dependency in transitive-dependencies(my-lib))
   copy to /my-libs
else
   copy to /other-libs

Возможно ли это сделатьmaven-assembly-plugin?Есть ли альтернативные плагины maven для этого?

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

Вы можете попробовать плагин зависимостей maven .

Выполнение 1 - копирует все зависимости, упомянутые в pom.

Выполнение 2 - копирует все зависимости вместе с транзитивными зависимостями.

<plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.1</version>
        <executions>
          <execution>
            <id>copy-project-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/project-dependency</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>true</overWriteSnapshots>
              <excludeTransitive>true</excludeTransitive>
            </configuration>
          </execution>
          <execution>
            <id>copy-project-dependencies-all</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/project-dependency-all</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>true</overWriteSnapshots>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
0 голосов
/ 18 февраля 2019

У меня сложилось впечатление, что вы начали неправильно.Вы говорите, что только некоторые программы нуждаются в other-libs на пути к классам, другие нет.Таким образом, это, кажется, не «реальные» зависимости вашего проекта, в большинстве случаев необязательные.

Я бы предложил использовать проект my-lib для создания zip-сборки из my-lib со всеми зависимостями.Это может быть использовано во всех контекстах, где otherlibs не требуется.

С другой стороны, вы можете создать второй zip из вашего исходного проекта, содержащий все библиотеки.Таким образом, у вас есть два разных почтовых индекса для двух разных целей, но вам не нужно создавать структуру каталогов внутри почтового индекса.

0 голосов
/ 15 февраля 2019

Вам необходимо определить два dependencySet в файле XML сборки

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    ...                                                                                                                        
    <dependencySets>                                                                                                                         
        <dependencySet>                                                                                                                      
            <useProjectArtifact>false</useProjectArtifact>                                                                                   
            <useTransitiveFiltering>false</useTransitiveFiltering>                                                                            
            <includes>                                                                                                                       
                <include>com.example:dependency1:jar</include>                                                                       
                <include>com.example:dependency2:jar</include>                                                                       
                ...
            </includes>                                                                                                                      
            <outputDirectory>/my-libs</outputDirectory>                                                                                             
        </dependencySet>                                                                                                                     
        <dependencySet>                                                                                                                      
            <useProjectArtifact>false</useProjectArtifact>                                                                                   
            <useTransitiveFiltering>false</useTransitiveFiltering>                                                                            
            <includes>                                                                                                                       
                <include>com.example:other1:jar</include>                                                                       
                <include>com.example:other2:jar</include>                                                                       
                ...
            </includes>                                                                                                                      
            <outputDirectory>/other-libs</outputDirectory>                                                                                             
        </dependencySet>                                                                                                                     
    </dependencySets>         
    ...                                                                                                               
</assembly>   

Документы:

http://maven.apache.org/plugins/maven-assembly-plugin/usage.html

http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

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