我开始研究一个记录不完整的Maven项目。我已经为项目设置了我的配置文件,但我可能会或可能不会缺少在资源过滤期间使用的属性定义。默认情况下,如果未在筛选文件中定义属性,则变量名称将保留在复制的资源中,并且Maven会以静默方式继续。
在这种情况下,有没有办法强制Maven快速失败?
作为一个最小的例子,拿这个pom,
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>production</id>
<properties>
<foo>Craig</foo>
</properties>
</profile>
</profiles>
</project>
并有一个过滤资源:
echo 'Hello, my name is ${foo}!' > src/main/resources/test
然后运行mvn clean install -Pproduction
会生成一个显示Hello, my name is Craig!
的文件,而正在运行mvn clean install
会生成一个显示Hello, my name is ${foo}!
的文件。
所以我的问题是;在第二种情况下如何强制Maven失败?
答案 0 :(得分:4)
Codehause数据库中存在此功能的JIRA问题:
您可以登录并投票。不幸的是,对这个重要的安全网功能的需求似乎很低......很奇怪。
答案 1 :(得分:2)
当然,Apache Maven Enforcer插件是你的朋友,特别是RequireProperty规则