Переменные среды в ant script не работают
Я пытаюсь настроить автономную среду сборки для проекта рамки 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>
${appserver.lib} объявлен в build.properties:
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
Два больших вопроса:
- Почему, черт возьми, он не разбирает envvar?
- Почему, черт возьми, он добавляет абсолютный путь к envvar?
Ответы
Ответ 1
Добавьте в файл build.xml
следующую строку:
<property environment="env"/>
чтобы определить префикс при ссылке на переменные окружения. На странице справки Property атрибут среды:
префикс для использования при извлечении переменных окружения. Таким образом, если вы укажете среду = "myenv", вы сможете получить доступ к переменным среды, зависящим от ОС, через имена свойств "myenv.PATH" или "myenv.TERM". Обратите внимание, что если вы укажете имя свойства с окончательным "." он не будет удвоен; т.е. среда = "myenv". по-прежнему позволят доступ к переменным окружения через "myenv.PATH" и "myenv.TERM". Эта функциональность в настоящее время реализована только на некоторых платформах. Не стесняйтесь отправлять исправления, чтобы увеличить количество платформ, на которых поддерживается эта функциональность;). Также обратите внимание, что свойства чувствительны к регистру, даже если переменные среды в вашей операционной системе отсутствуют; например Системная переменная системы Windows 2000 установлена в свойство Ant с именем "env.Path", а не "env.PATH".
Ответ 2
Я надеюсь, что вы объявляете <property environment="env."/>
перед использованием нотации env.
.
Кроме того, ниже приведен синтаксис в вашей сборке script для установки определенных переменных среды.
**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, делает обновления более плавными.
Ответ 3
Если кто-то еще пытается выполнить эту работу (как и я), и вы не можете (или не хотите) использовать export
для всех своих свойств, попробуйте set -a
как предложено здесь