【问题标题】:Maven warn or fail goal when resource filtering cannot find a property当资源过滤找不到属性时,Maven 警告或失败目标
【发布时间】:2013-07-18 19:48:00
【问题描述】:

我开始从事一个文档记录不佳的 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 失败?

【问题讨论】:

    标签: maven


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这是否需要在每次向项目中添加新属性时添加新规则?
      • 否,仅当需要该属性时。如果可能的话,我建议先选择好的默认值。
      猜你喜欢
      • 2015-06-10
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多