Я работаю над многомодульным проектом maven с этими модулями
parent
|-- restful // this is a jersey restful service as a WAR
|-- shared // some stuff shared by all other modules as a jar
|-- cl-client // a commandline client to the restful service, needs assembly
Родительский pom.xml использует dependencyManagement для перечисления всех зависимостей, используемых всеми модулями.
Pom для cl-client включает плагин сборки, настроенный для выполнения на этапе пакета:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>distro-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
а файл assembly.xml выглядит следующим образом:
<assembly>
<id>commandlinable</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>my:cl-client</include>
</includes>
<binaries>
<outputDirectory>${artifactId}</outputDirectory>
<unpack>true</unpack>
<dependencySets>
<dependencySet>
<outputDirectory>${artifactId}/lib</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>false</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</binaries>
</moduleSet>
</moduleSets>
</assembly>
Когда я запускаю mvn package
, модули cl-client собираются нормально и создают каталог, на который я надеялся, но единственная проблема заключается в том, что все jar-файлы зависимостей копируются в каталог lib /, даже те, которые используются только "restful «модуль, такой как банки, связанные с трикотажем. Я попытался перевернуть флаг useProjectArtifact
, но, похоже, это не имело никакого значения.
Так что мне просто интересно, могу ли я сказать, что сборка Maven должна включать только те банки, которые требуются модулю cl-client. Я пролистал довольно много онлайн-ресурсов по сборке Maven для многомодульных проектов, но не смог получить четких ответов.
mvn dependency:tree
в проекте cl-client показывает все JAR-файлы, которые вы видите в выходных данных сборки? - person Duncan Jones   schedule 07.02.2013cl-client
pom наследуется от родительского pom? - person Andrew Logvinov   schedule 07.02.2013