2

我有一个 Maven 项目,它被配置(通过使用 pom.xml 和 assembly.xml)打包一个 zip 文件,其中包含编译的 webapp(war 文件)和 src/main/folder 下的所有文件,只要我们运行mvn clean package assembly:single

该项目导入/使用另一个 maven 项目(它成为一个 jar 文件),而该项目又导入/使用第三个 maven 项目(同样是一个 jar 文件)。

第三个项目还包含 src/main/folder 中的一些文件,每当我构建主项目时,我希望将它们与 zip 文件中的其他文件放在一起(链顶部的一个成为战争文件)。

是否有可能以某种方式告诉 maven 将特定文件夹中的所有文件包含在它的所有依赖项(或一个特定依赖项)中以及 zip 文件中?

4

2 回答 2

2

从这里开始:Maven:完整参考 - 8.5。控制装配的内容

请注意,如果您deploy使用 Maven 项目assembly:assembly(您确实应该将其配置为<build>插件,而不是在命令行上使用),则程序集会“附加”到项目并安装在存储库中。然后,您可以使用 Maven 依赖符号来访问它们,即mygroup:myartifact:extrafiles:zip

我发现装配描述符<dependencySets>配置起来很麻烦。它们确实适用于简单的情况(包括应用程序在运行时需要的 JAR 文件)。

这是我为您想要的结果采取的一般方法:

  1. 使用Maven Dependency Plugin dependency:copy从其他项目下载特定文件,将它们放在 的子目录下target/

  2. 配置您的程序集描述符以将那些下载/提取的文件添加到您的最终程序集工件中。

或者,使用Maven Ant Run Plugin一起破解一些东西。

于 2012-10-11T17:56:41.907 回答
1

您将需要从第三个项目中生成一个额外的程序集来打包额外的文件。附加程序集 ID,以便生成一个名为 third-1.0.0-extrafiles.zip 的包

然后使用依赖描述符中的 <type>extrafiles</type> 将其添加为您的第一个项目的依赖项。在第一个项目的程序集中,您必须告诉它“解包”这种类型的依赖项(这样您就不会在 zip 中获得 zip)

于 2012-10-11T10:20:51.473 回答