Spring Boot:将系统属性传递给maven

时间:2015-01-20 15:23:58

标签: spring maven spring-boot

我试过了:

mvn -Dspring.profiles.active=dev spring-boot:run

但它不会影响我的默认配置。我用谷歌搜索了一下,发现:

mvn -DargLine="-Dspring.profiles.active=dev" spring-boot:run

但如果也失败了。

当我跑步时:

mvn package

然后:

java -Dspring.profiles.active=test -jar target/app-1.0.0.jar

它按预期工作(配置文件已更改)但无法从资源目录(FileNotFound异常)中找到以这种方式加载的文件:

new File(getClass().getClassLoader().getResource("data.yml").getFile())

使用maven运行应用程序时,此文件没有问题。

有什么建议吗?

3 个答案:

答案 0 :(得分:8)

尝试使用以下命令运行您的应用程序:

mvn spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=dev"

我不知道您使用的是哪个版本,但也请检查此issue

答案 1 :(得分:0)

对于当前版本(> = 2.0.0.RELEASE),参数为 -D spring-boot .run.jvmArguments

来源:Sprint-boot plugin

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"

也可以这样做:

mvn spring-boot:run -Dspring-boot.run.profiles=dev

答案 2 :(得分:0)

我也尝试了很多方法。但最后,对我有用的是将它们设置在 pom.xml 中,如 documentation 中所述。

<project>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.2.2.RELEASE</version>
        <configuration>
            <environmentVariables>
                <ENV1>5000</ENV1>
                <ENV2>Some Text</ENV2>
                <ENV3/>
                <ENV4></ENV4>
            </environmentVariables>
        </configuration>
        ...
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>