我的应用程序中有环境变量spring.mail.username=${username}
。
${username}
在 eclipse 环境变量中声明。当我构建 maven 包并安装时,然后将其部署到 tcServer。TC 服务器不知道${username}
。换句话说,在构建过程中,环境变量不包含在 war 文件中。
如何让 eclipse 中的环境变量包含在战争文件中以进行部署?
按照alexbt的答案使用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}
将在生成时注入属性的值。
如果您希望替换构建时变量,我建议您使用 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@