我的application.properties中有环境变量,例如spring.mail.username=${username}
${username}
在eclipse环境变量中声明。当我构建maven包并安装时,然后将其部署到tcServer。 TC服务器不知道${username}
。换句话说,环境变量在构建期间不包含在war文件中。
如何在eclipse中获取环境变量以包含在war文件中进行部署?
答案 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}
将在构建时注入属性的值。