Сборка Maven Включите слишком много зависимостей в ZIP - PullRequest
0 голосов
/ 21 октября 2011

У меня есть мультимодульный проект Maven. В одном модуле мы создаем ZIP с плагином maven-assembly-plugin. Конфигурация для этого:

<baseDirectory>/</baseDirectory>
  <formats>
    <format>zip</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
        <outputDirectory>/</outputDirectory>    
        <useProjectArtifact>true</useProjectArtifact>           
        <excludes>
            <exclude>
                com.sample.blabla:test-core-client
            </exclude>
        </excludes>
        <scope>runtime</scope>
    </dependencySet>
  </dependencySets>

И конфиг pom для этого:

<execution>
    <id>make-service-client-with-dependencies-zip</id>
    <phase>package</phase>
    <goals>
        <goal>single</goal>
    </goals>
    <configuration>
        <finalName>${service-client-with-dependencies.zip.filename}</finalName>
            <appendAssemblyId>true</appendAssemblyId>
        <outputDirectory>${project.build.directory}/zip</outputDirectory>
        <descriptors>
            <descriptor>src/main/assembly/test-service-client-with-dependencies.xml</descriptor>
        </descriptors>
    </configuration>
</execution>

К сожалению, созданный ZIP содержит гораздо больше банок, которые мы хотели бы ... например: 37 X maven-XXX JAR, много пружинных банок, фургонов, ... и т. Д.

Но мы не хотели бы включать эти банки, которые необходимы для выполнения. Как мы можем это сделать?

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

Плагин сборки Maven включает только банки, которые находятся в runtime области видимости в соответствии с вашей конфигурацией. Вы можете запустить mvn dependency:tree и сравнить вывод с содержимым вашего почтового индекса.

Вы можете попробовать установить для свойства useTransitiveDependencies значение false. Это исключит все переходные зависимости из почтового индекса. Но это может иметь неприятные побочные эффекты.

0 голосов
/ 21 октября 2011

Вы используете дескриптор test-service-client-with-dependencies.xml, который включает в себя все и кухонную раковину в результате.

Вместо этого используйте jar-with-dependencies. Это будет включать в себя зависимости времени выполнения записи (локальные и временные).

Если это все еще слишком много, то вы можете опустить зависимости, объявив их как <scope>provided</scope> (если кто-то еще добавит их в путь к классам позже), <scope>test</scope> (если зависимость необходима только для запуска тестов) или <optional>true</optional>, если это необязательная зависимость.

...