2015-05-04 54 views
0

重命名build.gradle中的文件名我正在使用一个gradle脚本,我需要在最后重命名工件名称,但我面临的问题是我的代码位于下方。版本来自 版本.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 

回答

0

根据您的问题,我明白你的问题”重建一个本地二进制文件。您是否尝试为您的组件设置baseName属性?这样你就可以从第一个地方创建你想要的共享库。现在

,对于上面的代码,然后它包含了2个问题:

  1. 当调用rename你和一个单引号(')包装${filechange}而不是用引号("),因此这个变量是没有解决它的价值。而且,这里不需要关闭块。
  2. 默认情况下,在重命名内部使用filechange将映射到它的字符串值,这是它的完整路径,而不仅仅是新的文件名。要解决这个问题,只需使用filechangename属性。

总之,每个下列选项应该为你做的工作:

// 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 // 
+0

感谢我能解决我的问题 – Sushant

0

我能解决我的问题,在下面的方式

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) 
}