我有一个maven项目,配置(通过使用pom.xml和assembly.xml)打包一个zip文件,包含已编译的webapp(war文件)和src / main /文件夹下的所有文件我们运行mvn clean package assembly:single
。
这个项目导入/使用另一个maven项目(它变成一个jar文件),而该项目又导入/使用第三个maven项目(同样是一个jar文件)。
第三个项目还包含src / main /文件夹中的一些文件,每当我构建主项目时,我都希望将它放在zip文件中的其他文件旁边(链接顶部的那个文件)战争文件)。
是否有可能告诉maven在zip文件中包含所有依赖项(或者在一个特定的依赖项中)的特定文件夹中的所有文件?
答案 0 :(得分:2)
从这里开始:Maven: The Complete Reference - 8.5. Controlling the Contents of an Assembly
请注意,如果您deploy
一个带有assembly:assembly
的Maven项目(您真的应将其配置为<build>
插件,而不是在命令行中使用),则程序集会“附加”到项目并安装在存储库中。然后,您可以使用Maven依赖关系表示法来访问它们,即mygroup:myartifact:extrafiles:zip
我发现汇编描述符<dependencySets>
很难配置。它们实际上是针对简单的情况(包括应用程序在运行时需要的JAR文件)。
以下是我对您期望的结果采取的一般方法:
使用Maven Dependency Plugin dependency:copy
从其他项目下载特定文件,将其放在target/
配置程序集描述符,将这些下载/解压缩的文件添加到最终的程序集工件中。
或者,使用Maven Ant Run Plugin一起破解某些内容。
答案 1 :(得分:1)
您需要从第三个项目生成一个额外的程序集来打包额外的文件。附加程序集ID,以便生成一个名为third-1.0.0-extrafiles.zip的包
然后使用&lt; type&gt; extrafiles&lt; / type&gt;将此作为第一个项目的依赖项添加在依赖描述符中。在第一个项目的程序集中,你必须告诉它“解包”这种类型的依赖项(所以你没有拉链压缩)