当资源筛选找不到属性时,Maven警告或失败目标

Cra*_*ton 5 maven

我开始着手进行文献记录不完善的Maven项目。我已经为项目设置了个人资料,但是我可能会或可能不会缺少在资源过滤期间使用的属性定义。默认情况下,如果未在过滤文件中定义属性,则变量名保留在复制的资源中,并且Maven继续静默运行。

有没有办法在这种情况下强制Maven快速失败?

举一个最小的例子,

 <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>
Run Code Online (Sandbox Code Playgroud)

并有需要过滤的资源:

 echo 'Hello, my name is ${foo}!' > src/main/resources/test
Run Code Online (Sandbox Code Playgroud)

然后运行mvn clean install -Pproduction产生一个文件,Hello, my name is Craig!而运行mvn clean install产生一个文件Hello, my name is ${foo}!

所以我的问题是;在第二种情况下,如何强制Maven失败?

小智 5

Codehause数据库中的此功能存在JIRA问题:

您可以登录并投票给他们。不幸的是,对该重要安全网功能的需求似乎很低……很奇怪。


Rob*_*lte 2

当然,Apache Maven Enforcer 插件是您的朋友,尤其是RequireProperty规则