2015-01-27 3 views
0

В настоящее время наша сборка maven включает все зависимости в банке, используя jar-with-dependencies.Создание контейнера зависимостей с Maven

Мы хотим разбить это на две отдельные банки: одну с кодом приложения и файлами проекта, а также с зависимостями.

Как это делается?

Благодаря

ответ

1

Это делается с помощью плагина

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

+0

Какая цель использовать вместо jar-with-dependencies? – user1052610

+0

Существует только одно - сборка: одиночная. Однако, что делает эта цель, зависит от того, как вы настраиваете файл assembly.xml – user1717259

0

Используйте Maven-тень-плагин, а не с следующей конфигурации Maven Ассамблеи:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
    <finalName>${project.artifactId}-${project.version}-libs</finalName> 
    <artifactSet> 
     <excludes> 
     <exclude>${project.groupId}:${project.artifactId}</exclude> 
     </excludes> 
    </artifactSet> 
    </configuration> 
    <executions> 
    <execution> 
     <phase>package</phase> 
     <goals> 
     <goal>shade</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

Хитрость заключается в том, чтобы определить конкретное окончательное имя. Это позволяет избежать замены баночки по умолчанию, которая упакована в maven-jar-plugin. По умолчанию используется значение $ {project.artifactId} - $ {project.version}. Так просто добавьте суффикс, как libs. Затем исключите сам артефакт, потому что классы не следует упаковывать дважды.

Билд приведет двух файлов .jar:

  1. $ {project.artifactId} - $ {project.version} .jar, содержащие классы и файлы проекта
  2. $ {project.artifactId} - $ {project.version} -libs.jar, содержащий содержимое всех зависимостей
Смежные вопросы