如何将maven变量传递给springboot应用程序

时间:2017-04-20 08:35:28

标签: spring-boot maven-3

我想将变量从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。谢谢! !

2 个答案:

答案 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;