【问题标题】:Environment variables in mavenMaven中的环境变量
【发布时间】:2016-02-25 13:52:21
【问题描述】:

我正在开发一个插件来在 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>

但它总是为空。有什么办法可以实现吗?

【问题讨论】:

  • 您不能设置环境属性,无论是在 Ant 或 Maven 中还是在其他任何东西中。这是不可能的

标签: java maven maven-antrun-plugin


【解决方案1】:

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

  • 程序运行在另一个系统上,而不是在构建时运行
  • env var 不是永久设置的,而是只为当前进程设置的,所以当它结束时,env var 就消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 2011-07-27
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    相关资源
    最近更新 更多