【问题标题】:Gradle Distribution create FileGradle 分发创建文件
【发布时间】:2015-10-26 19:47:48
【问题描述】:

我正在使用 gradle 构建一个桌面应用程序,并且我正在尝试为我的应用程序创建一个发行版。我使用了应用程序插件(它继承了分发插件),当我调用 distZip 任务时,我想在该 zip 中创建一个文件,其中包含一个配置文件,其中的值作为 gradle 命令的参数传递。例如:当我打电话时

gradle build distZip --project-prop myproperty=myvalue

我想在 zip 发行版中生成一个包含该内容的属性文件。 我尝试了以下方法但没有成功:

applicationDistribution.into(".") {
    new File("server.properties").write("myproperty=$myproperty")
}

当我这样做时,它会在项目的根目录中创建一个文件,而不是在分发 zip 的根目录中。有谁知道如何在分发 zip 中创建这个文件?

【问题讨论】:

    标签: java gradle properties


    【解决方案1】:

    会是:

    apply plugin: 'distribution'
    
    distZip {
       def p = File.createTempFile('aaa', 'bbb')
       p.write "my.property: $project.myProperty\n"
       p.deleteOnExit()
    
        from(p) {
          rename {
             'server.properties'
          }
       }
    }
    

    和调用:

    gradle clean distZip -Pmyproperty=bolo
    

    您需要配置准备分发的任务 - 在这种特殊情况下为 distZip - 它的类型为 Zip (Copy)。

    使用project.myproperty 引用属性时要小心。如果没有找到myproperty,则会抛出异常。

    【讨论】:

    • 如果我理解得很好,我需要在我的项目中已有该文件...对吗?
    • 有了这个构造project.file('lol'),是的。因为file 方法相对于项目路径解析文件。用new File('absolute path to external file')试试吧。
    • 这项工作与我放入示例中的方式相同。该文件是在我的项目中创建的,而不是在分发中。我只需要分发中生成的 zip 文件中的文件,而不需要我的项目中的文件。
    • 哦,对不起。我误解了。我不能没有临时文件。这会满足您的需求吗?如果是这样,我以后可能会建议这样的解决方案。
    • 有一个临时文件就可以了。
    猜你喜欢
    • 2014-05-16
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多