ant:设置系统相关属性的最佳方法?

ant:设置系统相关属性的最佳方法?,ant,Ant,我有许多文件/可执行文件的位置,这些位置可能会有所不同,这取决于我在哪台计算机上运行它们,我想以某种方式通过ant属性将它们抽象出来。最好的方法是什么?是否有一个系统范围的ant安装脚本被调用?或者我可以制作这样的脚本吗?设置一个名为properties.xml的ant构建文件,您应该在其中定义要自定义的属性 下面是我在项目中使用的properties.xml样板文件(我从一本关于Ant的书中改编): 如果您想在myproject中为myexec1创建一个自定义值,只需将一个自定义平面build

我有许多文件/可执行文件的位置,这些位置可能会有所不同,这取决于我在哪台计算机上运行它们,我想以某种方式通过ant属性将它们抽象出来。最好的方法是什么?是否有一个系统范围的ant安装脚本被调用?或者我可以制作这样的脚本吗?

设置一个名为properties.xml的ant构建文件,您应该在其中定义要自定义的属性

下面是我在项目中使用的properties.xml样板文件(我从一本关于Ant的书中改编):

如果您想在
myproject
中为myexec1创建一个自定义值,只需将一个自定义平面build.properties文件放到build.xml所在的同一目录中即可

build.properties文件可能如下所示:

myexec1=c:/custom/path/to/myexec1.exe

我或多或少使用标准的
build.properties
build local.properties
文件

第一个包含所有环境通用的默认值,第二个仅包含异常。第一个已签入subversion,而另一个未签入

编辑:复制/粘贴Akr的绝妙创意

此外,对于每个操作系统或部署构建系统的其他操作系统,您可能都有一个默认属性文件。这些文件也可以签入到您的版本控制系统中

然后,Ant脚本将包括以下所有文件(请记住:在Ant中,第一个定义获胜):


除了Vladimir的解决方案之外,您还可以为每个操作系统或部署构建系统的其他操作系统创建一个默认属性文件。使用${os.name}(和其他Java系统属性)设置路径。比如说

<property file="build-${os.name}.properties">


这些文件可以维护并签入您的版本控制系统。

+1好主意。我在不同的系统上使用
文件://
文件://
时遇到了一些问题,您的建议可以很好地处理这种情况。下面是一个解决“主机名x平台问题”的有效方案,简单使用:将在linux和Windows上工作,那么为什么要先构建本地文件?@KalpeshSoni,因为有了它,您可以覆盖本地文件中的所有属性(因为它是第一个加载的文件)。我认为错误的是依赖操作系统的文件,因为它必须覆盖默认文件,所以它必须显示在第二位。
myexec1=c:/custom/path/to/myexec1.exe
<property file="build-local.properties"/>
<property file="build.properties"/>
<property file="build-${os.name}.properties">
<property file="build-${os.name}.properties">