Gradle processResources腐蚀.jks

Gradle processResources腐蚀.jks,gradle,Gradle,我有一个我希望是一个简单的问题,我没有运气找到答案 我想让build.gradle文件通过替换某些变量来设置Spring启动应用程序中的版本。正如广告所宣传的那样: def tokens = [ "version": 'project.version.toString()', "projectName": project.name, "groupId": rootProject.group, "artifactId": project.name ] process

我有一个我希望是一个简单的问题,我没有运气找到答案

我想让build.gradle文件通过替换某些变量来设置Spring启动应用程序中的版本。正如广告所宣传的那样:

def tokens = [
    "version": 'project.version.toString()',
    "projectName": project.name,
    "groupId": rootProject.group,
    "artifactId": project.name
]
processResources{
    filter (ReplaceTokens, tokens: tokens)
    outputs.upToDateWhen{ false }
}
但是,这段代码也替换了java密钥存储中的某些内容,我的资源中也包含了这些内容,这会破坏java密钥存储。当我使用ant matchers排除任何我不想替换的文件时,不会复制任何其他文件。i、 e.包括“*.属性”

是否有一种方法仅在某些文件上进行令牌替换,同时仍复制资源目录中的其余文件?是否需要为非属性文件定义单独的复制任务


谢谢

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

  • 跳过jks文件
  • 将其移动到二进制资源
  • 下面是我如何跳过
    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"
        }
      }
    }
    

    我今天遇到了同样的问题,我在上找到了此解决方案:

    您找到了此问题的解决方案吗@布鲁尔0224?我没有。最后我走了另一个方向。谢谢你,伙计,帮我节省了很多时间。对于maven用户,您可能需要将.jk放入
    sr/main/resources文件夹
    ,并将
    改为“$buildDir/classes/main/certs”
    改为
    改为“$buildDir/resources/main”
    processResources {
        filesNotMatching("**/certs/*") {
           expand(
             timestamp: new Date(),
             commit: commit,
             branch: branch,
             version: project.version
           )
        }
    }