如何在eclipse to war文件中包含maven环境变量

时间:2017-01-15 11:28:20

标签: java maven spring-boot

我的application.properties中有环境变量,例如spring.mail.username=${username}

${username}在eclipse环境变量中声明。当我构建maven包并安装时,然后将其部署到tcServer。 TC服务器不知道${username}。换句话说,环境变量在构建期间不包含在war文件中。

如何在eclipse中获取环境变量以包含在war文件中进行部署?

2 个答案:

答案 0 :(得分:0)

如果您希望替换构建时变量,我建议您使用maven过滤:

拥有一个环境变量(不是日食变量):

export username=user3184890

然后,在您的pom.xml中,激活资源上的maven过滤(假设您的application.properties位于src/main/resources

<build>
    <resources>
        <resource>
            <directory>${project.basedir}/src/main/resources</directory>
                <filtering>true</filtering>
        </resource>
    </resources>
...

此外,将您的application.properties 更改为:

spring.mail.username=${env.username}

spring.mail.username=@env.username@

答案 1 :(得分:0)

使用alexbt "push state"中描述的Maven过滤,是包含其他地方定义的值的正确方法。他的例子涉及包括操作系统环境变量。您也可以将其扩展到Maven属性。例如,

<project ...>
   <properties>
      <spring.mailuser>bob@mycompany.com</spring.mailuser>
   </properties>
   ...
   <build>
      ...
   </build>
</project>

定义了一个Maven属性,其值由${spring.mailuser}检索,可以用作部分 其他Maven配置或通过Maven过滤作为内容注入。鉴于此,改变 applicable.properties如下

 spring.mail.username=${spring.mailuser}

将在构建时注入属性的值。