maven中的环境变量

时间:2016-02-25 13:52:22

标签: java maven maven-antrun-plugin

我正在开发一个插件,用于在maven的预集成阶段部署我的应用程序。现在,当应用程序启动并创建所有bean时,然后在setter方法中传递一个env变量,其值被提取。

public void setEnvName(final String passwordEnvName) {
    super.setPassword(System.getenv(passwordEnvName));
}

用法

<bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
    <property name="algorithm" value="PBEWithMD5AndDES" />
    <property name="passwordEnvName" value="PRIVATE_KEY" />
</bean>

现在我无法在unix框中设置此变量。我尝试了以下

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <configuration>
                <tasks>
                    <exec executable="env">
                        <env key="PRIVATE_KEY" value="PASSWORD_KEY"/>
                    </exec>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

但它始终为null。有什么方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

Maven仅在构建时执行,而不是在运行时执行。 因此,即使您在构建时设置了env变量,在运行时它也将为空,如果:

  • 程序在另一个系统上运行,而不是在构建
  • env var未永久设置,但仅适用于当前进程,因此当它结束时,env var就消失了。