web-dev-qa-db-fra.com

Les variables d'environnement dans ant script ne fonctionnent pas

J'essaie de mettre en place un environnement de construction indépendant de la machine pour un projet de structure Spring, et la configuration de ma fourmi ne semble pas fonctionner. J'ai cherché pas mal, mais tout le monde semble penser que les références env. * Marchent à merveille. Quelqu'un pourrait-il trouver l'erreur de mes manières?

L'erreur:

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>

référence catalina-ant-classpath:

<path id="catalina-ant-classpath">
    <fileset dir="${appserver.lib}">
        <include name="catalina-ant.jar"/>
    </fileset>
</path>

$ {appserver.lib} déclaré dans build.properties:

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

deploy.path=${appserver.home}/webapps

En écho aux travaux envvar:

bash-3.1$ echo $CATALINA_HOME
C:\Program Files\Tomcat

Les deux grandes questions:

  • Pourquoi diable n'analyse-t-il pas l'envvar?
  • Pourquoi diable présout-il le chemin absolu vers l'envvar?
12
Maxim Kumpan

Ajoutez la ligne suivante au fichier build.xml:

<property environment="env"/>

définir le préfixe lors du référencement des variables d’environnement. À partir de la page Property reference pour l’attribut environment :

le préfixe à utiliser lors de la récupération des variables d'environnement. Ainsi, si vous spécifiez environment = "myenv", vous pourrez accéder aux variables d'environnement spécifiques au système d'exploitation via les noms de propriété "myenv.PATH" ou "myenv.TERM". Notez que si vous fournissez un nom de propriété avec un "." Final. il ne sera pas doublé; c'est-à-dire environnement = "myenv". autorise toujours l'accès aux variables d'environnement via "myenv.PATH" et "myenv.TERM". Cette fonctionnalité n'est actuellement implémentée que sur certaines plates-formes. N'hésitez pas à envoyer des correctifs pour augmenter le nombre de plates-formes sur lesquelles cette fonctionnalité est prise en charge;). Notez également que les propriétés sont sensibles à la casse, même si les variables d'environnement de votre système d'exploitation ne le sont pas; par exemple. La variable de chemin système de Windows 2000 est définie sur une propriété Ant nommée "env.Path" plutôt que "env.PATH".

21
hmjd

J'espère que vous déclarez <property environment="env."/> avant d'utiliser la notation env..

Vous trouverez également ci-dessous la syntaxe dans votre script de construction pour définir des variables d'environnement spécifiques.

**Windows and OS/2**

Supposer que Ant est installé dans c:\ant. Les éléments suivants configurent l'environnement:

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

**Linux/Unix (bash)**

Supposer que Ant est installé dans/usr/local/ant. Les éléments suivants configurent l'environnement:

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 )

Avoir un lien symbolique configuré pour pointer vers la version JVM/JDK rend les mises à jour plus transparentes.

1
Gyanendra Dwivedi

Si quelqu'un d'autre a encore du mal à faire ce travail (comme je l'ai fait), et que vous ne pouvez pas (ou ne préférez pas) utiliser export pour toutes vos propriétés, essayez set -a comme suggéré ( here

0
Constantinos