【发布时间】:2013-04-09 05:54:13
【问题描述】:
我有一个如下形式的项目
- pom.xml
- projectA
- pom.xml
- src/main/
- java
- startupScript
- projectB
- pom.xml
- src/main/
- java
- startupScript
- projectAssembly
- pom.xml
我希望projectAssembly 生成一个 tar.gz,其中包含两个文件夹,一个用于 projectA,一个用于 projectB,在每个文件夹中,都会有项目的依赖项和 startupScript 库。
“天真”的做法是在每个项目中添加assembly.xml 文件,该文件大致如下:
<assembly>
<formats>
<format>tar.gz</format>
</formats>
<baseDirectory>/${project.artifactId}</baseDirectory>
<fileSets>
<fileSet>
<directory>${basedir}/src/main/startupScripts</directory>
<outputDirectory>/startupScripts</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>/lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
然后,在projectAssembly中,依赖projectA和projectB的<type>tar.gz</type>,并添加一个大致如下的汇编文件
<assembly>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<unpack>true</unpack>
</dependencySet>
</dependencySets>
</assembly>
这可行,但是,我不需要项目 A 和 B 的中间 tar.gz,并且生成它们,特别是如果它们有很多依赖项,需要很长时间。
如何告诉 maven 只直接组装 projectAssembly 的 tar.gz 而不会浪费时间打包和解压中间档案?
【问题讨论】:
-
你需要项目a和b的tar.gz文件中的依赖吗?如果不只是从程序集描述符中删除dependencySets。
-
@khmarbaise 但它们将如何出现在
assemblyProject创建的最终 tar.gz 中? -
您好!您使用的是哪个 Maven 版本?
-
@Jan 嗨,3.0.1。好像没什么大不了的。
-
对我来说确实如此:我认为 moduleSets 可以帮助你,但我会在给出答案之前尝试一下 - 唉,我只使用 Maven 2。
标签: maven maven-assembly-plugin