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



我正在尝试为Spring框架项目设置一个独立于机器的构建环境,但我的ant配置似乎不起作用。我已经搜索了很多,但每个人似乎都认为 env.* 引用开箱即用。有人能发现我的方式错误吗?

错误:

bash-3.1$ ant build
Buildfile: c:UsersmkumpanProjectsSpring testingbuild.xml
BUILD FAILED
c:UsersmkumpanProjectsSpring testingbuild.xml:85: c:UsersmkumpanProjectsSpring testing${env.CATALINA_HOME}lib does not exist.

构建.xml:85:

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

Catalina-ant-classpath reference:

<path id="catalina-ant-classpath">
    <fileset dir="${appserver.lib}">
        <include name="catalina-ant.jar"/>
    </fileset>
</path>

${appserver.lib} 在 build.properties 中声明:

appserver.home=${env.CATALINA_HOME}
appserver.lib=${appserver.home}/lib
deploy.path=${appserver.home}/webapps

呼应环境工作:

bash-3.1$ echo $CATALINA_HOME
C:Program FilesTomcat

两大问题:

  • 为什么它不解析出 envvar?
  • 为什么它要预先附加到envvar的绝对路径?

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

<property environment="env"/>

以在引用环境变量时定义前缀。在环境属性的"属性引用"页中:

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

我希望您在使用env.表示法之前声明<property environment="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 版本可使更新更加无缝。

如果其他人仍在努力完成这项工作(就像我一样),并且您不能(或宁愿不)为您的所有属性使用export,请尝试按照此处的建议set -a

最新更新