Подтвердить что ты не робот

Gradle Задачи выдачи дистрибутива не в корне ZIP

Я создал простую конструкцию Gradle, которая экспортирует содержимое. /src/main/ groovy в zip файл. Zip файл содержит папку с тем же именем, что и zip файл. Я не могу понять, как получить файлы в корень zip файла, используя плагин распространения.

то есть. gradlew clean distZip производит:

helloDistribution-1.0.zip → helloDistribution-1.0 → files

что бы я хотел:

helloDistribution-1.0.zip → файлы

Мой файл build.gradle:

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

version = '1.0'

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

Я попытался исправить проблему, добавив into { 'dir' }, но безрезультатно.

4b9b3361

Ответ 1

Использование into '/' похоже на трюк:

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

Ответ 2

К сожалению, ответ penfold не работал у меня. Вот решение, которое я придумал:

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
}