过滤时,如果指定的文件不存在,如何使用默认过滤器文件?

超级马特

在我的POM中,我有:

<properties>
    <custom.properties>
        ${basedir}/src/main/props/${environment}-${flavor}.properties
    </custom.properties>
</properties>

environmentflavor可以在命令行中提供:

mvn clean install -Denvironment=test -Dflavor=guest

在maven-resources插件定义中,我有:

<filters>
    <filter>${basedir}/src/main/props/base.properties</filter>
    <filter>${custom.properties}</filter>
</filters>

如果创建的文件${environment}-${flavor}.properties不存在,是否可以定义后备或完全忽略?Maven当前将引发错误。

我宁愿没有创建的每一个可能的组合一个虚拟文件environmentflavor

谢谢。

用户名

这有些未经测试,但是我在类似的用例中使用了properties-maven-plugin,我想加载一个可能存在或不存在的文件。可能不是一个完全可行的答案,但我希望它能给您一些想法。

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>properties-maven-plugin</artifactId>
  <version>1.0.0</version>
  <executions>
    <execution>
      <id>load-filters</id>
      <phase>initialize</phase>
      <goals>
        <goal>read-project-properties</goal>
      </goals>
      <configuration>
        <files>
          <file>${basedir}/src/main/props/${environment}-${flavor}.properties</file>
        </files>
        <quiet>true</quiet>  <!-- important! -->
      </configuration>
    </execution>
  </executions>
</plugin>

“安静”部分告诉插件,如果文件不存在,则不要使构建失败;它只会记录一条消息并继续前进。如果文件存在,则将属性作为项目属性加载。

resources插件执行时,它使用过滤器

在POM构建/过滤器部分中指定的系统属性,项目属性和过滤器属性文件

因此,无需任何进一步配置即可将属性应用于资源。您无需<filters>在资源插件中指定

以上涵盖了“忽略”情况。如果要提供后备选项,可能会有些棘手。我不确定属性插件如何与之交互

<filters>
  <filter>${basedir}/src/main/props/base.properties</filter>
</filters>

例如-哪个优先,加载的项目属性或过滤器属性?我很想尝试这样的事情:

<properties>
    <prop1>defaultValue</prop1>
    <prop2>anotherDefaultValue</prop2>
</properties>

然后让加载的文件根据需要覆盖这些值。我相信这可行。

您还可以签出属性插件的代码,以查看如果加载了指定相同属性的多个文件,则哪个属性优先,然后配置该插件以导致所需行为的顺序加载两个文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果Javascript中不存在默认数组过滤器对象,如何获取

属性“过滤器”不存在

自动调整过滤器时,忽略范围外或不存在的过滤器

如何设置默认过滤器以隐藏div

如何设置默认过滤器月份和年份?

在不带过滤器的二进制模式下使用OPEN DATASET FOR OUTPUT打开不存在的文件时打开OPEN_PIPE_NO_AUTHORITY

意图过滤器给出了不存在的文件路径

Ansible默认过滤器

如何在Power Bi中使用默认过滤器和可用过滤器?

如何获取未注册的DirectShow过滤器的默认过滤器名称

在tensorflow中使用gabor过滤器或其他任何过滤器代替默认过滤器

如果没有过滤器,如何将卡片设置为默认值?如何为页面设置默认过滤器?

如果过滤器中不存在变量,则调用函数

Excel VBA添加自动过滤器(如果不存在)

ts属性“过滤器”在类型“ {}”上不存在

BadRequest 请求不存在过滤器

“用户”类型上不存在“过滤器”属性

如何使Notepad ++使用“ .txt”文件作为默认的打开文件对话框过滤器?

当我们在angularjs ui网格中使用默认过滤器时如何显示未找到匹配记录

Django 过滤器,当值无或不存在或特定值时

带部分编号的默认过滤器

Django admin中的默认过滤器

DJANGO - 模型中的默认过滤器

Flask-Admin默认过滤器

在视图中添加默认过滤器-Odoo

Symfony:如何将表单过滤器与实体中不存在的字段一起使用?

如何检查dynamoDB过滤器表达式中是否不存在属性

当不存在给定的事件属性时,如何为文件目标指定默认路径?

添加默认过滤器显然会“禁用”原始过滤器