读取Ant build.xml中的.properties文件



我需要一些使用Ant的属性文件的帮助。我有以下内容:

  1. 构建。文件属性。这个文件包含一个on=1

  2. ant.xml文件。

我想从我的属性文件中读取on属性,如果值是1,我想在我的构建文件中执行任务。否则我希望它什么都不做。谁能指导我如何做到这一点?

这应该是所有你需要做的:

1。获取最新版本的ant-contrib JAR并放在lib中

2。在构建脚本

中包含属性
<property file="build.properties"/>

3。将以下taskdef条目添加到构建脚本

<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>

4。最后,像这样定义一个if任务:

<if>
 <equals arg1="${on}" arg2="1" />
 <then>
   <echo message="I am going to do something here" />
 </then>
 <else>
   <echo message="I am going to do nothing" />
 </else>
</if>

注意,您可以在从属性文件导入的属性前添加标识符。例如,你可以这样导入:

<property file="build.properties" prefix="uniqueprefix"/>

然后你会在你的文件中引用'uniqueprefix '。"On",而不是"On"。

<equals arg1="${uniqueprefix.on}" arg2="1" />

您可以使用Ant内置的条件任务,但我有一种感觉,如果您需要它,您最好使用Ant -contrib带来的额外函数。另外,请注意,将构建文件命名为'build.xml'是标准的,而不是'ant.xml'。实际上,Ant将无法根据您使用的名称自动定位它。好运。

如果您不想编写自己的Ant Task或使用其他库,只需"clean" Ant,请看看这个:

mybuild.properties:

on=on

使用on或true或类似的东西,1将不起作用。

build . xml:

<?xml version="1.0" encoding="UTF-8"?>
<project name="project" default="default">
    <property file="mybuild.properties"/>    
    <target name="default" depends="on, off" description="description">
        <echo>default</echo>
    </target>
    <target name="on" if="${on}">
      <echo>on</echo>
    </target>
    <target name="off" unless="${on}">
      <echo>off</echo>
    </target>
</project>

在我看来,你想实现下面给定的任务。

<property file="build.properties" />

<target name="default" description="Homeworks">
    <condition property="on">
        <equals arg1="{on}" arg2="1" />
    </condition>
    <antcall target="taska" />
    <antcall target="taskb" />
</target>
<target name="taska" if="on">
    <echo message="Testing task one" />
</target>
<target name="taskb" unless="on">
    <echo message="Testing task two" />
</target>

如果你需要一个详细的解释,请告诉我。

一种看似困难但实际上相当简单的方法:编写一个自定义ant任务(一个简单的java类,20行代码)。任务将

  1. 读取属性文件(位置/名称可以作为属性传递给任务)
  2. on的值赋给蚂蚁属性

然后你可以使用ant属性来控制流量。

public class MyOwnTask extends Task {
  private String filename = "build.properties"; // some default value
  public void setFilename(String filename) {
    this.filename = filename;
  }
  public void execute() {   // the "main" method
    Properties p = new Properties();
    p.load(filename);
    String onValue = p.get("on");
    getProject().setProperty("ON_PROPERTY", onValue);
  }
}

然后你需要一些<taskdef>,就是这样。

相关内容

  • 没有找到相关文章

最新更新