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

Max*_*pan 12 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.
Run Code Online (Sandbox Code Playgroud)

build.xml文件:85:

<taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>
Run Code Online (Sandbox Code Playgroud)

catalina-ant-classpath参考:

<path id="catalina-ant-classpath">
    <fileset dir="${appserver.lib}">
        <include name="catalina-ant.jar"/>
    </fileset>
</path>
Run Code Online (Sandbox Code Playgroud)

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

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

deploy.path=${appserver.home}/webapps
Run Code Online (Sandbox Code Playgroud)

与envvar相呼应:

bash-3.1$ echo $CATALINA_HOME
C:\Program Files\Tomcat
Run Code Online (Sandbox Code Playgroud)

两大问题:

  • 为什么它不能解析envvar?
  • 它到底为什么会在envvar的绝对路径之前?

hmj*_*mjd 21

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

<property environment="env"/>
Run Code Online (Sandbox Code Playgroud)

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

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