Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ant脚本中的环境变量不起作用_Java_Ant_Environment Variables - Fatal编程技术网

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

Java ant脚本中的环境变量不起作用,java,ant,environment-variables,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:\User

我正试图为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>
与envvar作品相呼应:

bash-3.1$ echo $CATALINA_HOME
C:\Program Files\Tomcat
两大问题:

  • 为什么它不解析出envvar呢
  • 为什么它会在envvar的绝对路径前加上前缀

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

<property environment="env"/>

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

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


我希望您在使用
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)**
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 )
假设Ant安装在/usr/local/Ant中。以下内容设置了环境:

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

**Linux/Unix (bash)**
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版本的符号链接可以使更新更加无缝。

如果其他任何人仍在努力实现这一点(就像我所做的),而您不能(或不愿意)为所有属性使用
导出
,请尝试
设置-a
,如建议的那样如此简单。。。但在我读过的文档中,这一点并不明显。谢谢,马上!答案可以并且将在9分钟内被接受。有人能解释一下,为什么使用%PROGRAMDATA%不能在ant文件中找到并替换为正确的路径吗。我已经包括了这里的财产。在命令中:“echo%PROGRAMDATA%”可以正常工作,尽管它没有在Windows->System->Environmental Variables中定义。