我有许多文件/可执行文件的位置,根据我在哪台计算机上运行它们,它们可能会有所不同,我想通过ant属性以某种方式将它们抽象出来。做这件事最好的方法是什么?是否有一个系统范围内的ant安装脚本会被调用?或者我可以写一个这样的脚本吗?
发布于 2009-12-06 20:58:14
除了Vladimir的解决方案之外,对于每个操作系统或其他可能部署构建系统的操作系统,您可能还有一个默认的属性文件。使用${os.name} (和其他Java system属性)设置路径。例如
<property file="build-${os.name}.properties">这些文件也可以维护并签入到您的版本控制系统中。
发布于 2009-12-05 21:09:33
我使用或多或少标准的build.properties和build-local.properties文件。
第一个变量包含所有环境通用的默认值,第二个变量仅包含异常。第一个签入subversion,而另一个没有签入。
编辑:复制/粘贴Akr的优秀想法
此外,对于每个操作系统或其他可能部署构建系统的操作系统,您可能都有一个默认属性文件。这些文件也可以签入到您的版本控制系统中。
然后,Ant脚本将包含所有文件,如下所示(请记住:在Ant中,以第一个定义为准):
<property file="build-local.properties"/>
<property file="build.properties"/>
<property file="build-${os.name}.properties">发布于 2009-12-04 05:48:11
设置一个名为properties.xml的ant构建文件,您应该在其中定义您想要定制的属性。
下面是我在项目中使用的properties.xml样板(我改编自一本关于Ant的书):
<?xml version="1.0" encoding="UTF-8"?>
<project
name="workspace-properties"
>
<dirname
property="workspace-properties.basedir"
file="${ant.file.workspace-properties}"
/>
<!--
==========================================================
Load Environment Variables
==========================================================
-->
<!-- #Load environment variables -->
<property environment="env" />
<!-- this is here to deal with the fact that an IntelliJ IDEA build
has no ant home
-->
<property
name="ant.home"
value="${env.ANT_HOME}"
/>
<!-- get Unix hostname, and set to Windows comparable name -->
<!-- #Trick to get host name x-platform -->
<property
name="env.COMPUTERNAME"
value="${env.HOSTNAME}"
/>
<!--
==========================================================
Load property files
Note: the ordering is VERY important.
==========================================================
-->
<!-- #Allow even users property file to relocate -->
<property
name="user.properties.file"
location="${user.home}/.build.properties"
/>
<!-- Load the application specific settings -->
<!-- #Project specific props -->
<property file="build.properties" />
<!--
==========================================================
Define your custom properties here.
You can overwrite them through build.properties and
${user.home}/.build.properties
==========================================================
-->
<property name="myexec1" location="/usr/bin/myexec1"/>
<property name="myexec2" location="/usr/bin/myexec2"/>
</project>这里最重要的是尽可能多地提供有用的缺省属性值,这样就永远不会有自定义的build.properties文件了。
然后,只需在项目的build.xml中对该文件执行<import>操作。
<project
name="my-project"
>
<!-- this is done, so you may import my-project somewhere else -->
<dirname
property="my-project.basedir"
file="${ant.file.my-project}"
/>
<import file="${my-project.basedir}/relative/path/to/properties.xml"/>
<target name="using.myexec1">
<echo message="myexec1=${myexec1}"/>
</target>
</project>如果您需要my-project中的myexec1的自定义值,只需将一个自定义平面build.properties文件放在build.xml所在的同一目录中。
build.properties文件可能如下所示:
myexec1=c:/custom/path/to/myexec1.exehttps://stackoverflow.com/questions/1842287
复制相似问题