使用版本在build.gradle中重命名文件名

时间:2015-05-04 13:41:16

标签: gradle build.gradle gradlew

我正在处理一个gradle脚本,我需要在最后重命名工件名称,但我面临的问题是我的代码在下面。版本来自于 version.properties文件,我能够在build.gradle脚本中正确读取它,但我在最后更改了工件的名称,例如libmain.so到NativeJNI-4.0.0_15然后它没有更改并从libmain.so更改为filechange.Cansome让我知道这里有什么问题

    def filechange = file("NativeJNI-${project.version}.so")
    //println filechange
    task fixartifactname (type: Copy) {
           //def filechange = "NativeJNI-${project.version}.so"
           //println filechange
           from 'build/binaries/mainSharedLibrary'
           into 'build/libs'
   // def filechange = file("NativeJNI-${project.version}.so")
    println filechange
    include('libmain.so')
    rename ('libmain.so', '${filechange}')
    }
    //println fixartifactname
    build.dependsOn fixartifactname

2 个答案:

答案 0 :(得分:1)

我可以通过以下方式修复我的问题

def filechange = file("build/libs/NativeJNI-${project.version}.so")
task copyfile(type: Copy) {
     from 'build/binaries/mainSharedLibrary'
     into 'build/libs'
     include('libmain.so')
     rename ('libmain.so', filechange.name)
}

答案 1 :(得分:0)

根据您的问题,我了解您正在构建原生二进制文件。您是否尝试为组件设置baseName属性?这样,您就可以从头开始创建具有所需名称的共享库。

现在,关于上面的代码,它包含两个问题:

  1. 在调用rename时,您使用单个撇号(${filechange})包裹'而不是使用引号("),因此此变量未被解析它的价值。此外,这里不需要封闭块。
  2. 默认情况下,在重命名中使用filechange将映射到其字符串值,这是其完整路径而不仅仅是新文件名。要解决此问题,只需使用name。{/ li>的filechange属性即可

    总而言之,以下每个选项都应该为您完成工作:

    // use inverted commas
    rename ('libmain.so', "$filechange.name")
    
    // remove apostrophe or commas
    rename ('libmain.so', filechange.name) //
    
    // groovy style function call with no paranthesis
    rename 'libmain.so', filechange.name //