蚂蚁脚本中的环境变量不起作用

时间:2013-09-10 08:26:18

标签: java ant environment-variables

我正在尝试为Spring框架项目建立一个与机器无关的构建环境,而我的ant配置似乎无法正常工作。我搜索了很多,但似乎每个人都认为env。*引用开箱即用。有人可能会发现我的方式错误吗?

错误:

bash-3.1$ ant build
Buildfile: c:\Users\mkumpan\Projects\Spring testing\build.xml

BUILD FAILED
c:\Users\mkumpan\Projects\Spring testing\build.xml:85: c:\Users\mkumpan\Projects\Spring testing\${env.CATALINA_HOME}\lib does not exist.

的build.xml:85:

<taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>

catalina-ant-classpath参考:

<path id="catalina-ant-classpath">
    <fileset dir="${appserver.lib}">
        <include name="catalina-ant.jar"/>
    </fileset>
</path>
在build.properties中声明的

$ {appserver.lib}:

appserver.home=${env.CATALINA_HOME}
appserver.lib=${appserver.home}/lib

deploy.path=${appserver.home}/webapps

回应envvar的作品:

bash-3.1$ echo $CATALINA_HOME
C:\Program Files\Tomcat

两个大问题:

  • 为什么它不能解析envvar?
  • 为什么它会在它前面加上envvar的绝对路径?

3 个答案:

答案 0 :(得分:21)

将以下行添加到build.xml文件中:

<property environment="env"/>

在引用环境变量时定义前缀。来自 environment 属性的Property参考页面:

  

检索环境变量时使用的前缀。因此,如果指定environment =“myenv”,您将能够通过属性名称“myenv.PATH”或“myenv.TERM”访问特定于操作系统的环境变量。请注意,如果您提供属性名称为final “”它不会加倍;即环境=“myenv。”仍然允许通过“myenv.PATH”和“myenv.TERM”访问环境变量。此功能目前仅在特定平台上实现。随意发送补丁以增加支持此功能的平台数量;)。   另请注意,即使操作系统上的环境变量不是,属性也区分大小写;例如Windows 2000的系统路径变量设置为名为“env.Path”的Ant属性,而不是“env.PATH”。

答案 1 :(得分:1)

我希望您在使用<property environment="env."/>表示法之前声明env.

此外,以下是构建脚本中用于设置特定环境变量的语法。

**Windows and OS/2**

假设Ant安装在c:\ ant中。以下设置环境:

set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk-1.5.0.05
set PATH=%PATH%;%ANT_HOME%\bin

**Linux/Unix (bash)**

假设Ant安装在/ usr / local / ant中。以下设置环境:

export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.5.0.05
export PATH=${PATH}:${ANT_HOME}/bin

**Linux/Unix (csh)**

setenv ANT_HOME /usr/local/ant
setenv JAVA_HOME /usr/local/jdk/jdk-1.5.0.05
set path=( $path $ANT_HOME/bin )

将符号链接设置为指向JVM / JDK版本可使更新更加无缝。

答案 2 :(得分:0)

如果其他人仍在努力完成这项工作(就像我一样),而你不能(或不愿意)对所有属性使用export,请按照建议set -a { {3}}