我正在尝试为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
两个大问题:
答案 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}}