首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ant:设置系统相关属性的最佳方式?

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

Stack Overflow用户
提问于 2009-12-04 03:25:32
回答 3查看 4.7K关注 0票数 5

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

EN

回答 3

Stack Overflow用户

发布于 2009-12-06 20:58:14

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

代码语言:javascript
运行
复制
<property file="build-${os.name}.properties">

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

票数 10
EN

Stack Overflow用户

发布于 2009-12-05 21:09:33

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

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

编辑:复制/粘贴Akr的优秀想法

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

然后,Ant脚本将包含所有文件,如下所示(请记住:在Ant中,以第一个定义为准):

代码语言:javascript
运行
复制
<property file="build-local.properties"/>
<property file="build.properties"/>
<property file="build-${os.name}.properties">
票数 8
EN

Stack Overflow用户

发布于 2009-12-04 05:48:11

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

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

代码语言:javascript
运行
复制
<?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>操作。

代码语言:javascript
运行
复制
<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文件可能如下所示:

代码语言:javascript
运行
复制
myexec1=c:/custom/path/to/myexec1.exe
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1842287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档