首页 文章

来自依赖战争的Webapp内容在本地复制

提问于
浏览
0

我正在使用maven编写应用程序 . 最终结果是一个war文件 . 我以这样的方式配置它,我有一个名为“war”的项目,它获取所有需要的 jar 并产生最后的战争 . 我有一个名为“ui”的第二个项目,其中包含所有ui元素 . 此ui项目还包含要包含在webapp目录中的文件 . 这就是为什么ui模块也作为war文件打包的原因 . 在项目“war”的pom.xml中,我包含了以下依赖项:

<dependency>
        <groupId>ui</groupId>
        <artifactId>ui</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
</dependency>

当我从“战争”项目中打包所有内容时,“ui”的webapp不仅会复制到最后的战争中,还会复制到项目“war”的本地webapp文件夹中 . 有没有办法停用这个,以便ui的webapp的内容只在最终的jar中结束?否则,我的“战争”项目会受到来自其他模块的文件和文件夹的污染,并且永远不会被清除 . 所以在ui中添加然后删除的文件仍然会出现在“war”项目中 .

1 回答

  • 0

    你没有从pom.xml附加war配置,我假设你正在使用maven覆盖默认设置 .

    您的问题来自于使用"war"作为项目名称,这与重叠默认值冲突 . 根据WAR插件documentation

    workDirectory目录,用于在需要时解压缩依赖的WAR . 默认值:$ / war / work

    您需要将workDirectory显式设置为不同的值:

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                    <workDirectory>target/overlay-war-folder</workDirectory>
                    <overlays>
                            <overlay>
                                    <groupId>your-group-id</groupId>
                                    <artifactId>ui</artifactId>
                            </overlay>
                    </overlays>
            </configuration>
    </plugin>
    

    更好的解决方案是更改模块的名称,因为使用关键字来命名任何项目工件被认为是一种不好的做法,并且您可能会遇到更多问题 .

相关问题