【问题标题】:How to include a generated file into the war with maven, but to not add it to source如何将生成的文件包含到与 maven 的战争中,但不将其添加到源中
【发布时间】:2012-11-14 17:06:59
【问题描述】:

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

How create file and put it in a war with Maven?

Rename a generated file in Maven before building WAR

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

【问题讨论】:

    标签: maven war


    【解决方案1】:

    我会说这是您应该查看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>
    

    【讨论】:

    • 像魅力一样工作,谢谢。这是一个我没有意识到的很酷的功能。此外,由于项目之间的关系是一种方式(一个依赖于另一个,但不是相反),我在我的主项目中而不是在主 pom 中有覆盖。
    • 太棒了!当我说父母战争时,我并不是说 pom 大师,但我猜你注意到了。
    猜你喜欢
    • 2011-01-25
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2016-01-02
    相关资源
    最近更新 更多