我在Mac Yosemite上使用Maven 3.3.3和Java 8.我在/ etc / profile文件中定义了一个变量JBOSS_HOME ...
JBOSS_HOME=/opt/wildfly-10.0.0.CR2
在我的终端(使用bash shell)中,我可以看到这个变量的值......
davea$ echo $JBOSS_HOME
/opt/wildfly-10.0.0.CR2
但是,当我运行我的Maven脚本(来自同一个shell)时,我无法访问此变量的值。以下
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>20020829</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>create-dodeploy-file</id>
<phase>package</phase>
<configuration>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<property environment="env" />
<echo message="jboss home: ${env.JBOSS_HOME}" />
产生......
[echo] jboss home: ${env.JBOSS_HOME}
是什么给出的?如何让Maven识别我的环境变量?
答案 0 :(得分:1)
您应该删除第<property environment="env" />
行。如Ant documentation中所定义,这将读取系统环境变量(而不是用户环境变量)并将它们存储在属性中,前缀为"env"
。这将隐藏Maven定义的${env.*}
属性。
因此,此配置将起作用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>20020829</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>create-dodeploy-file</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<echo message="jboss home: ${env.JBOSS_HOME}" />
</target>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:0)
当我在〜/ .profile文件的顶部添加此行
时export JBOSS_HOME=$JBOSS_HOME
然后Maven脚本选择了环境变量。直觉,嗯?