【问题标题】:Rename the filename in build.gradle with version用版本重命名 build.gradle 中的文件名
【发布时间】:2015-05-04 13:41:16
【问题描述】:

我正在处理一个 gradle 脚本,我需要在最后重命名工件名称,但我遇到了一个问题,我的代码如下。版本来自 version.properties 文件,我可以在 build.gradle 脚本中正确读取它,但是我在最后更改了工件的名称,例如libmain.so 到 NativeJNI-4.0.0_15 然后它不会改变并将其从 libmain.so 更改为 filechange。有人可以告诉我这里有什么问题

    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

【问题讨论】:

    标签: gradle build.gradle gradlew


    【解决方案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)
    }
    

    【讨论】:

      【解决方案2】:

      根据您的问题,我了解您正在构建本机二进制文件。您是否尝试为您的组件设置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 //
      

      【讨论】:

      • 感谢我能够解决我的问题
      猜你喜欢
      • 2016-05-10
      • 2017-08-21
      • 2011-02-05
      • 2011-03-19
      • 2014-06-01
      • 2019-06-04
      • 1970-01-01
      相关资源
      最近更新 更多