gpt4 book ai didi

Gradle processResources 损坏 .jks

转载 作者:行者123 更新时间:2023-12-03 03:08:54 34 4
gpt4 key购买 nike

我希望这是一个简单的问题,但我没有找到答案。

我想让 build.gradle 文件通过替换某些变量来设置我的 Spring Boot 应用程序中的版本。这与广告一样有效:

def tokens = [
"version": 'project.version.toString()',
"projectName": project.name,
"groupId": rootProject.group,
"artifactId": project.name
]
processResources{
filter (ReplaceTokens, tokens: tokens)
outputs.upToDateWhen{ false }
}

然而,此代码还替换了 java key 存储中的某些内容,我也将其包含在我的资源中,这会破坏它。当我使用 ant 匹配器排除任何不是我要替换的文件时,不会复制任何其他内容。即包括“*.properties”

有没有办法只对某些文件进行 token 替换,同时仍然复制资源目录中的其余文件?我是否需要为非属性文件定义一个单独的复制任务?

谢谢!

最佳答案

解决方案是在执行任务 processReousrces 时跳过任何二进制文件。例如,我使用 expand() 将文本文件中的标记替换为在 gradle 脚本中计算的值。所以,

  1. 跳过jks文件
  2. 将其移动到二进制资源

下面是我可以跳过目录src/main/resources/certs/ 下的文件的方法。 doLast() 保证在完成对资源的处理后将 jks 文件复制到适当的位置。

ext {
commit = 'git rev-parse --short HEAD'.execute().text.trim()
branch = 'git rev-parse --abbrev-ref --symbolic HEAD'.execute().text.trim()
}

/**
* Processes the resources, excluding the certs while building.
*/
processResources {
// Exclude the certs files to be processed as text
exclude "**/certs/*"

expand(
timestamp: new Date(),
commit: commit,
branch: branch,
version: project.version
)

// Copy the jks file to the resources (classpath)
doLast {
copy {
from "src/main/resources/certs/server.jks"
into "$buildDir/classes/main/certs"
}
}
}

关于Gradle processResources 损坏 .jks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36988438/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com