当前位置: 首页 > 知识库问答 >
问题:

Ant在xml文件中用属性名称替换属性值

鞠源
2023-03-14

我需要使用属性名称替换xml文件中的属性值。

前任:

<property name="test-name" value="default-value"/>

我有一个替换此值的目标。i、 e“默认值”。如果用户为属性测试名称指定了错误的值,则可以多次运行此目标。用户可以使用正确的值重试运行目标。因此,我不能使用正则表达式替换“默认值”。我只能依靠物业名称。有没有一种方法可以在ant中使用属性值的名称来替换属性值?

共有2个答案

宰父君昊
2023-03-14

由于我想允许用户多次替换值(如果他/她给出了错误的值),我想出了以下解决方案,

           <replaceregexp
                    replace="property name=&quot;my.propertyKey&quot; 
                    value=&quot;user.value&quot;"
                    byline="true" file="${basedir}/test.xml">
                <regexp pattern="property name=&quot;my.property&quot; 
                    value=&quot;(.*)&quot;"/>
            </replaceregexp>

这将使用属性键搜索属性并替换整行。

东郭思远
2023-03-14

在Ant中执行此操作的典型方法是复制或移动要更改的文件,使用过滤器集定义要在文件中替换的标记-值对。

因此,在文件的“模板”版本中,可能会有类似的内容

<document>
    <element value="@test-name@"/>
</document>

在构建文件中,您可能有如下内容:

<property name="my.value" value="default-value"/>
<copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt" override="true">
  <filterset>
      <filter token="test-name" value="${my.value}"/>
  </filterset>
</copy>
 类似资料:
  • 问题内容: 对于Linux和Windows OS,是否有一种方法可以将计算机名称作为ant属性获得。 问题答案: 在Windows上,主机名位于环境变量“ COMPUTERNAME”中,在Linux上,环境变量为“ HOSTNAME”。由于ant属性是不可变的,因此应执行以下操作: 即,将环境作为带有env前缀的属性导入。然后将env.HOSTNAME设置为env.COMPUTERNAME的值,除

  • 如何用配置文件myprops中的文本替换uri。cfg? myprops.cfg: 我的尝试: 然后骆驼按原样读取uri,它不会用属性的值替换它。 另一个尝试: 错误: 组织。osgi。服务蓝图容器ComponentDefinitionException:无法验证xml组织。xml。萨克斯。SAXParseException:cvc复杂类型。2.4.a: 发现以元素“{”开头的内容无效http:/

  • 我正在使用log4j2进行一个项目,我的log4j2中有一些值。可配置的属性。该项目还将包括其他组件的配置文件。理想情况下,我希望将所有配置保存在一个地方,以便能够在同一个文件中为log4j设置那些可配置的值,这样我就不会有两个不同的地方更改配置值(例如,包括环境变量)。 我在这方面找到的方法并不理想,比如让我的项目的其他部分从主配置文件中读取值,并将它们放入系统变量中,由log4j获取,因为我希

  • 问题内容: 我为该标题表示歉意。我找不到更好的方法来解释这种情况。 我使用URL http://www.exampledepot.com/egs/java.util/Props.html中所述的Property类加载属性文件。 我的问题是我可以在该属性文件中使用属性吗? 例: test.properties 其他语法有可能吗? 谢谢 问题答案: 以前从未见过。您当然 可以 制作自己的预处理器。只要

  • 问题内容: 我想根据属性名称打印属性值,例如 我想做这样的事情 上面的代码给出了一个,我相信这是因为BeatifulSoup使用了name,所以它不能用作关键字参数。 问题答案: 这很简单,请使用以下代码- 如果不清楚,请发表评论。