Ant:引用动态属性

时间:2009-06-29 02:16:59

标签: java ant build-process

我想使用相同的ant脚本在我的本地Windows环境或我们的redhat构建服务器上进行构建。

我在两个文件(build_unix.properties& build_windows)中有一个变量'buildDirectory'。我想根据环境设置变量。

<osfamily property="os.family"/>
<property file="./build_${os.family}.properties" />
<property name="tmp-base.folder" value="${buildDirectory}/tmp/"/>

我也试过

<if>
    <os family="unix"/>
    <then>
        <property file="./build_unix.properties" />
    </then>
    <else>
        <property file="./build_windows.properties" />
    </else>
</if>

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您是否在询问如何自动设置os.family属性?

如果是这样,这是一种方法:

  <available file="C:\\" property="os.family" value="windows" />
  <available file="/usr/bin/" property="os.family" value="unix" />

啊!编辑的问题让你更清楚你在问什么(不是这个),我看到你正在使用ant-contrib的“osfamily”任务来确定OS系列。但是我会把这个答案留给那些只使用ant而没有ant-contrib的人。

答案 1 :(得分:0)

我希望您的if ... then ... else版本能够正常运行。因为它显然不是我会添加一些额外的回声来确保你的构建正在做你认为它正在做的事情。

  1. then和else中的echo会让你知道正在执行什么路径。
  2. 为属性添加前缀(例如&lt; property file =“...”prefix =“test”/&gt;),然后添加&lt; echoproperties prefix =“test”/&gt;确保您认为正在加载的属性是。

答案 2 :(得分:0)

您可以有两个文件:build-unix.propertiesbuild-windows.properites,在init目标中,您只需复制一份:

<copy file="build-${os.family}.properties" tofile="build.properties">

您的主build.xml可以简单地引用build.properties文件。

使它正常工作可能非常棘手,所以我要做的是将构建服务器的所有属性保留在build.properties文件中,并允许{{1中的本地覆盖(对于Windows框) }}。您还可以将属性移动到build-local.properties,以便您的构建文件按以下顺序包含属性文件

build-common.properties