我想将变量从maven命令行传递给spring boot主类,但我不知道,这是我的maven pom文件:
<properties>
<maven.tomcat.home>Here should add argument from command line</maven.tomcat.home>
</properties>
这是我的春季靴子主要课程:
@PropertySource(value ={"file:@maven.tomcat.home@/em/easymobile-application.properties"})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
因此,当我通过命令行运行maven时,应用程序将作为war文件部署到tomcat
mvn clean install -Dmaven.tomcat.home=/usr/local/apache-tomcat-8.0.33/webapps
然后我启动tomcat,错误说找不到easymobile-application.properties,所以你知道如何使用@PropertySource
或其他东西从maven命令行加载easymobile-application.properties。谢谢! !
答案 0 :(得分:-1)
我不认为这是正确的方法,假设在某些时候你可以使用它,如果你需要/必须将webapp部署到/ usr / local / apache-tomcat-会发生什么? 8.0.xx?你需要再次编译工件吗?那不好。更好的方法是只生成可在每个环境中部署/安装的1个二进制/工件:staging / prod / etc. ..
如前所述,如果应用需要文件路径配置,我建议使用配置属性文件而不是Maven
属性。
答案 1 :(得分:-1)
谢谢!我用一个简单的方法解决了这个问题,我只是在tomcat \ bin \ catalina.sh中添加包含application.properties的文件夹的路径
CLASSPATH =:在/ usr /本地/ Apache-Tomcat的8.0.33
@PropertySource指向&#34; classpath:em / easymobile-application.properties&#34;