我正在处理一个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
答案 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
属性?这样,您就可以从头开始创建具有所需名称的共享库。
现在,关于上面的代码,它包含两个问题:
rename
时,您使用单个撇号(${filechange}
)包裹'
而不是使用引号("
),因此此变量未被解析它的价值。此外,这里不需要封闭块。 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 //