当前位置: 首页 > 知识库问答 >
问题:

如何覆盖生成目录中的Spring属性文件?

苍阳成
2023-03-14

我有一个Spring Boot and Gradle项目。我在gradle中定义了应用程序版本。Gradle可以从中读取的属性文件。我希望在应用程序代码中有这个数字,作为一个@值(“${version}”)注入值。

我正在尝试做的是将版本号复制到applicathtml" target="_blank">ion.properties或单独的version.properties文件中(两者都位于src/main/资源中)。实际上,我想将属性文件加载到Properties对象中,设置“app.verion”属性,然后将其写入。理想情况下,所有这些步骤都将在构建目录($buildDir/Resources/main/version.properties)中的文件上完成。这样我就不需要将这个直接设置的变量存储在VCS中。不幸的是,只有当我在源代码目录中写入属性文件时,它才起作用。如果我尝试在构建中编辑一个,那么它没有任何效果。

你能帮帮我吗?我的任务应该何时运行?我觉得Spring可能会覆盖构建中的文件。

我的代码是:

task appendVersionToApplicationProperties << {
    //  File versionPropsFile = new File("$buildDir/resources/main/version.properties")
    versionPropsFile.withWriter { w ->
        Properties p = new Properties()
        versionPropsFile.withInputStream {
            p.load(it)
        }
        p['app.version'] = appVersion // this is from gradle.properties
        p.store w, null
    }
}

build.finalizedBy(appendVersionToApplicationProperties)

gradle构建的输出:

$ gradle clean build
:clean
:compileJava
:compileGroovy UP-TO-DATE
:processResources
:appendVersionToApplicationProperties UP-TO-DATE
:classes
:findMainClass
:war
:bootRepackage
:assemble
:compileTestJava
:compileTestGroovy UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses
:test
:check
:build

BUILD SUCCESSFUL

Total time: 27.16 secs

共有1个答案

百里业
2023-03-14

您可以这样做:

task appendVersionToApplicationProperties {
    // write your properties
    // this is just basic groovy code
    Properties props = new Properties()
    props.put('app.version', appVersion) // get it from wherever
    def file = new File("$buildDir/resources/main/version.properties")
    file.createNewFile()
    props.store(file.newWriter(), null)
}

// this will run your task after the java compilation and resource processing
processResources.finalizedBy appendVersionToApplicationProperties
 类似资料:
  • 本文向大家介绍如何覆盖Spring Boot项目的默认属性?相关面试题,主要包含被问及如何覆盖Spring Boot项目的默认属性?时的应答技巧和注意事项,需要的朋友参考一下 这可以通过在application.properties文件中指定属性来完成。 例如,在Spring MVC应用程序中,您必须指定后缀和前缀。这可以通过在application.properties文件中输入下面提到的属性来

  • 我想覆盖我在Quarkus应用程序的配置文件中配置的属性。 我怎样才能做到这一点?

  • 库/.../properties.kt: Library/.../LibraryService.kt: 图书馆/.../Spring。工厂: 我认为重写

  • 在spring boot中,我有以下配置文件:application-email.yaml

  • 我有一个被Dockerized的spring boot应用程序。默认情况下,应用程序具有,因此应用程序不会从ConfigServer获取application.properties。但是,在单独的环境中部署时,我们需要将应用程序与configserver集成,因此需要重写属性并将其设置为true。 为此,我使用以下docker-compose文件运行docker映像: 更新:我不能使用配置文件,因

  • 我的测试属性将被放置在生产属性中的属性覆盖。当时,我两人都给起了名字,但它不起作用,所以我就像这篇文章中说的那样,改成了并使用profile。现在看起来就像贝娄(kotlin): 在中,我只将此属性设置为,而在中,则设置为。 这个测试失败了。完整示例可在github上找到 Thx提前。