为什么Maven不识别我的环境变量?

时间:2015-10-26 15:49:24

标签: maven environment-variables maven-3 maven-antrun-plugin

我在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识别我的环境变量?

2 个答案:

答案 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脚本选择了环境变量。直觉,嗯?