Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当资源筛选找不到属性时,Maven警告或失败目标_Maven - Fatal编程技术网

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

当资源筛选找不到属性时,Maven警告或失败目标,maven,Maven,我开始从事一个文档不完整的Maven项目。我已为项目设置了配置文件,但我可能会或可能不会缺少在资源筛选过程中使用的属性定义。默认情况下,如果未在筛选文件中定义属性,则变量名保留在复制的资源中,Maven将以静默方式继续 在这种情况下,有没有办法强迫Maven快速失败 作为一个最小的例子,以这个pom为例 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchem

我开始从事一个文档不完整的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>
然后运行
mvn clean install-Pproduction
生成一个文件,上面写着
Hello,我的名字是Craig在运行
mvnclean install
时,生成一个文件,上面写着
Hello,我的名字是${foo}


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

当然,ApacheMaven Enforcer插件是您的朋友,尤其是Codehause数据库中此功能存在规则问题:

  • 筛选:检查是否有未替换的占位符
  • 如果资源未完全筛选,则生成失败

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

这是否要求每次向项目添加新属性时都添加新规则?否,仅当需要该属性时。如果可能的话,我会建议首先进行良好的违约。
 echo 'Hello, my name is ${foo}!' > src/main/resources/test