2

我在我的 Maven 项目中需要来自其他项目(.jsp、.tag 文件)的依赖项。为了解决这个问题,我从这些其他项目中创建了一个“资源”jar,并将它们指定为 maven 中的依赖项。然后我解压缩 jar(在 ant 中,在 generate-sources 生命周期阶段)并将文件复制到他们需要去的地方。这就是问题所在(也欢迎提出更好的整体方法的建议)。我在想我可以将这些文件移动到我想要它们的目标目录中,并且它们会与战争一起打包,但这不起作用。常见的方法似乎是在war插件中添加一个额外的资源目录:

如何创建文件并将其与 Maven 交战?

在构建 WAR 之前在 Maven 中重命名生成的文件

但是,我真的不想将这些文件保留在我的源代码中,因为它们属于另一个项目。有没有办法可以将临时资源包含到 jar 中?

4

1 回答 1

2

我想说这是您应该查看Maven War Overlay的典型案例。

覆盖用于跨多个 Web 应用程序共享公共资源。WAR 项目的依赖项收集在 WEB-INF/lib 中,但覆盖在 WAR 项目本身上的 WAR 工件除外。

这意味着您可以将另一场战争的碎片应用到您自己的战争中。最好的情况是,如果所有公共资源都在一个父战争中,而其他战争将使用覆盖技术。

您将依赖项添加到要用作覆盖的战争中:

<dependency>
    <groupId>com.acne</groupId>
    <artifactId>acne-web-style</artifactId>
    <type>war</type>
    <scope>compile</scope>
</dependency>

然后你将它应用到maven-war-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <overlays>
            <overlay>
                <groupId>com.acne</groupId>
                <artifactId>acne-web-style</artifactId>
                <includes>
                    <include>**/resources/*.jpg</include>
                </includes>
            </overlay>
            <overlay>
                <!-- empty groupId/artifactId represents the current build -->
            </overlay>
        </overlays>
    </configuration>
</plugin>
于 2012-11-14T17:38:20.690 回答