Gradle分发任务输出文件不在ZIP的根目录下

Gradle分发任务输出文件不在ZIP的根目录下,gradle,software-distribution,Gradle,Software Distribution,我创建了一个简单的Gradle构建,它将./src/main/groovy的内容导出到一个zip文件。zip文件包含一个与zip文件名称完全相同的文件夹。我不知道如何使用分发插件将文件放入zip文件的根目录中 i、 e.gradlew clean distZip生产: helloDistribution-1.0.zip->helloDistribution-1.0->文件 我想要的是: helloDistribution-1.0.zip->files 我的build.gradle文件: appl

我创建了一个简单的Gradle构建,它将./src/main/groovy的内容导出到一个zip文件。zip文件包含一个与zip文件名称完全相同的文件夹。我不知道如何使用分发插件将文件放入zip文件的根目录中

i、 e.
gradlew clean distZip
生产:

helloDistribution-1.0.zip->helloDistribution-1.0->文件

我想要的是:

helloDistribution-1.0.zip->files

我的build.gradle文件:

apply plugin: 'groovy'
apply plugin: 'distribution'

version = '1.0'

distributions {
    main {
        contents {
            from {
                'src/main/groovy'
            }
        }
    }
}

我试图通过将
添加到{'dir'}
中来解决此问题,但没有效果。

使用
添加到{'dir'
似乎可以解决此问题:

contents {
    from {
        'src/main/groovy'
    }
    into '/'
}

不幸的是,彭福德的回答对我不起作用。以下是我提出的解决方案:

task Package(type: Zip) {

    from {
        def rootScriptFiles = [] // collection of script files at the root of the src folder
        new File('src/main/groovy/').eachFile { if (it.name.endsWith('.groovy')) rootScriptFiles.add(it) }


        ['build/libs/',                 // build binaries
         'src/res/',                    // resources
         rootScriptFiles,               // groovy root source files
        ]
    }
    baseName = pluginName
}

这样不行。我认为创建这种层次结构的唯一方法是使用普通的ant-zip任务。如果您仅仅更改build.gradle并调用
gradle-distZip
,您将看不到想要的效果。您必须调用
gradle clean distZip