ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 当Maven war插件无法找到webResource目录时,如何避免构建失败?

2019-07-10 17:12:12  阅读:351  来源: 互联网

标签:java maven maven-3 maven-plugin maven-war-plugin


我正在使用一个通过Maven生成WAR工件的模块.该模块有一个典型的src / main / webapp目录.我正在使用Maven的war插件来补充webapp目录和另一个可以在构建时以编程方式提供的资源目录.所以我的插件在POM中配置如下:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <webResources>
            <resource>
                <directory>src/main/webapp.${flavor}</directory>
            </resource>
        </webResources>
    </configuration>
</plugin>

其中${flavor}默认为根POM中的值,或者可以选择在构建时使用以下内容覆盖:

mvn clean install -Dflavor = customer

问题是,如果找不到为资源提供的目录(即src / main / webapp.customer不存在),war插件会在构建期间死于火热的死亡.我的项目可以有很多种,我宁愿不必为每种可能的味道创建一个空目录,只是为了安抚插件.

问题:当目录不存在时,有没有办法配置war插件以使构建失败?如果没有,在构建时尚不存在的情况下创建此目录的最佳方法是什么?

谢谢.

UPDATE

经过额外的思考和研究,我决定在构建时使用maven-antrun-plugin在条件下创建“风味”目录.毕竟,如果构建需要目录在那里 – 并且在没有它的情况下将死亡 – 那么构建应该确保目录在那里.所以这是我的antrun插件执行:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <id>created-flavored-resources-directory</id>
            <phase>process-resources</phase>
            <configuration>
                <target>
                    <mkdir dir="src/main/webapp.${flavor}"/>
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

仅当目录尚不存在时,执行才会创建目录.这允许我们有一个目录……或不.一切正常.

解决方法:

我有类似的问题(实际上在谷歌搜索解决方案时发现了你的问题).

我的观察与你的观察相同:目录必须存在.但是,它不适用于< include> s.所以我希望即使webapp.${flavor} subdir不存在也会通过:

<resource>
    <directory>src/main</directory>
    <includes>
        <include>webapp.${flavor}</include>
    </includes>
</resource>

缺点是你不能再使用< targetPath>重命名为dir.

我的背景:我有可选的dir,内置文档,必须捆绑到战争中.当docs-build目录不存在时,组合目录= ${project.basedir} /../ docs-build include = **不起作用.相比之下,directory = ${project.basedir} / .. include = docs-build工作. (最后我放弃了这种方法,因为我需要重命名dir但这是一个不同的故事.)

标签:java,maven,maven-3,maven-plugin,maven-war-plugin
来源: https://codeday.me/bug/20190710/1426227.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有