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

Spring boot 如何将maven变量传递给springboot应用程序,spring-boot,maven-3,Spring Boot,Maven 3,我想将变量从maven命令行传递到spring boot主类,但我不知道,下面是我的maven pom文件: <properties> <maven.tomcat.home>Here should add argument from command line</maven.tomcat.home> </properties> 因此,当我按下面的命令行运行maven时,应用程序将作为war文件部署到tomcat mvn cle

我想将变量从maven命令行传递到spring boot主类,但我不知道,下面是我的maven pom文件:

<properties>        
   <maven.tomcat.home>Here should add argument from command line</maven.tomcat.home>
</properties>
因此,当我按下面的命令行运行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。谢谢

我认为这不是一种正确的方法,假设在某个时候你能做到这一点,那么如果你需要/不得不将webapp部署到/usr/local/apache-tomcat-8.0.xx会发生什么呢?您需要再次编译工件吗?那不好。更好的方法是只生成1个可在每个环境中部署/安装的二进制/工件:staging/prod/等等


如前所述,如果应用程序需要文件路径配置,我建议使用配置属性文件,而不是
Maven
属性。

谢谢!我用一种简单的方法解决了这个问题,我只是在tomcat\bin\catalina.sh中添加了包含application.properties的文件夹的路径

CLASSPATH=:/usr/local/apache-tomcat-8.0.33


@PropertySource指向“classpath:em/easymobile application.properties”

为什么您需要pom.xml文件中的属性。最好在配置属性文件中使用属性。可能与ootero重复。注释@PropertySource需要一个常量值,但我想尝试一下是否可以从命令行传递参数,我可以更改easymobile-application.properties的路径。如果配置文件存在于resource文件夹中,它将被打包到war/jar文件中,这不便于修改。如果你要责骂提问者,至少回答这个问题。我需要出于不同的原因做同样的事情。
mvn clean install -Dmaven.tomcat.home=/usr/local/apache-tomcat-8.0.33/webapps