Gradle build spring boot app as war with active profile
我想将我的spring boot应用程序打包为针对特定配置文件的war。 这可以通过在application.properties文件中设置spring.profiles.active = profile名称来完成。
进行战争时是否可以将其设置为参数。 gradle build --spring.profiles.active =配置文件名称?
-
您可以使用-P开关将参数传递给gradle构建。 然后用项目实例引用传递的属性。
听起来好像您想在构建spring.profiles.active的值时将其烘烤。 您可以使用Gradle的资源过滤支持来做到这一点。 像这样配置您的application.properties:
1
| spring.profiles.active=@activeProfiles@ |
然后在build.gradle中应用过滤,以将@activeProfiles@替换为属性的值:
1 2 3 4 5
| processResources {
filter org.apache.tools.ant.filters.ReplaceTokens, tokens: [
activeProfiles: activeProfiles
]
} |
在此示例中,我使用了名为activeProfiles的属性。 然后,您必须在运行构建时提供一个值:
1
| ./gradlew -PactiveProfiles=foo build |
-
安迪,这个解决方案对我有用。但是,问题在于,当我切换配置文件时,processResources不会再次执行。
-
也许坡级由于不正确地相信其最新信息而跳过了任务?也尝试使用clean:.gradlew -PactiveProfiles=switched clean build
-
我在我的一个项目中使用了这种方法,但是我遇到了二进制文件被过滤的问题,例如部署后,字体未正确显示在应用程序中。此处定义的处理资源任务处理所有文件,这可能最终导致二进制文件损坏。解决方案是将过滤的文件限制为确实需要过滤的文件。我在此博客文章中对此进行了更详细的描述:blog.codeleak.pl/2015/1 ...
-
这对我不起作用。我看到一个错误:无法获得类型为org.gradle.language.jvm.tasks.ProcessResources的task:processResources的未知属性activeProfiles。
-
该错误表示您尚未设置activeProfiles属性。您是如何尝试设置的?
-
@AndyWilkinson-我没有正确设置属性activeProfiles。对其进行了修改,并且像魅力一样起作用。谢谢。