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

2022-09-04 08:31:51

我正在尝试为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.

构建.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 Files\Tomcat

两个大问题:

  • 为什么它不解析出envvar?
  • 为什么它要先于通往 envvar 的绝对路径?

答案 1

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

<property environment="env"/>

以在引用环境变量时定义前缀。从环境属性的属性参考页面:

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


答案 2

我希望你在使用符号之前声明。<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 版本,使更新更加无缝。


推荐