【问题标题】:ant - if doesn't support the "name" attributeant - 如果不支持“名称”属性
【发布时间】:2013-05-22 06:07:31
【问题描述】:

我有如下要求。 我有一个 .properties 文件(具有名称=值对),我正在从中读取几个属性。 我想检查一个特定的属性是否存在。 对于以下代码,我收到if doesn't support the "name" attribute 的错误。 其中 JavaProjectName,projDir 是从 .properties 文件中获取的名称。

<if name="${JavaProjectName}" exists="true">
<property name="importJavaProject" value="${projDir}/${JavaProjectName}"/>
</if>

你能告诉我我哪里做错了吗?

【问题讨论】:

标签: ant ant-contrib


【解决方案1】:

首先阅读&lt;if&gt; 任务中的the document。不支持你写的方式。

应该是:

<if>
    <isset property="JavaProjectName" />
    <then>
        <property name="importJavaProject" value="${projDir}/${JavaProjectName}"/>
    </then>
</if>

但是,如果之前设置了另一个属性 JavaProjectName(在构建文件或导入的属性文件中),您希望设置一个属性 importJavaProject。那么,如果JavaProjectName没有设置呢?

您应该考虑使用&lt;else&gt; 部件,否则构建失败。

如果您只想检查是否存在并在构建不存在时失败,只需使用&lt;fail&gt;

<fail unless="JavaProjectName"/>

还要检查Condition 任务和"Supported conditions"


加法:

还请仔细阅读评论中 ManMohan 发布的问题。对于“检查 .properties 文件中的属性是否存在”,该问题的可接受答案会检查“属性是否已设置”和“其值是否为空”。

【讨论】:

  • 感谢coolcfan的回答。但它对我没有用。我知道阅读文件没问题。我在一些额外的蚂蚁任务中看到了这段代码。我的要求如下
  • 我的要求如下如果 JavaProjectName 的名称和值对存在,那么它必须为 importJavaProject 分配值,否则它不应该抛出错误。它必须将剩余的值分配给名称.如果没有分配importJavaProject值,那么它不应该导入项目。这是我的要求。如果你能帮助我。
  • @Thiru “它必须将剩余的值分配给名称”是什么意思?另外,如果你不需要else处理,如果你只是想在没有设置JavaProjectName的情况下跳过设置属性importJavaProject,那么上面&lt;if&gt;的正确用法就足够了。
  • 更改了我的代码以支持上述方案。我的问题现已解决。非常感谢您的支持。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-03
  • 2018-12-26
  • 2011-07-12
  • 1970-01-01
相关资源
最近更新 更多