2016-02-26 4 views
2

У меня есть сценарий построения градиента, в котором я использую задачу «Zip» для создания zip-архива непосредственно из исходного каталога.Gradle Zip Task: Добавить динамически сгенерированный файл

Помимо копирования всех файлов внутри структуры исходного каталога в zip-архив, я ищу способ включить динамически созданный файл, который не находится в исходном каталоге.

Вы, ребята, знаете, как я могу это сделать?

Вот псевдо-код, что я хочу сделать:

task('archive', type: Zip) { 
    ... 
    from 'source' 
    newFile('dynamically-generated.txt', 'dynamic file content') 
} 

И здесь исходные и целевые структуры:

[[email protected] ~]$ tree source/ 
source/ 
├── file1.txt 
├── file2.txt 
└── file3.txt 

0 directories, 3 files 
[[email protected] ~]$ unzip -l destination.zip 
Archive: destination.zip 
    Length  Date Time Name 

--------- ---------- ----- ---- 
     0 02-26-2016 16:56 source/ 
     0 02-26-2016 16:56 source/file2.txt 
     0 02-26-2016 16:56 source/dynamically-generated.txt 
     0 02-26-2016 16:56 source/file1.txt 
     0 02-26-2016 16:56 source/file3.txt 
---------      ------- 
     0      5 files 
+0

* включают динамически сгенерированный файл, который не находится в исходном каталоге * Тогда где это? – RaGe

+0

Содержимое будет генерироваться динамически (через код) при сборке/копировании, и мне нужен новый файл, созданный в zip-архиве назначения с предоставленным именем и контентом. –

+0

Чем он отличается от 'from 'source''? Просто добавьте еще одну строку 'from' с новым каталогом. – RaGe

ответ

0

Это то, что я закончил:

subprojects { 
    apply plugin: 'myPlugin' 

    //The 'build' task is set up by the plugin 
    build { 
    //Customization to keep consistent with artifacts being currently generated. 
    doFirst { 
     new File(getTemporaryDir(), 'artifact-fullname.txt').text = "${project.name}-${project.version}\n" 
    } 
    archiveName = "${project.name}.${project.build.extension}" 
    from getTemporaryDir() 
    } 
} 

Спасибо!

0

Объединяя мои комментарии выше и ваш getTemporaryDir комментарий:

task generateThenZip()<<{ 
    def tempDir = getTemporaryDir() 
    newFile("$tempDir/dynamically-generated.txt", 'dynamic file content') 

    zip{ 
     from 'source' 
     from tempDir 
    } 
} 
+0

Это выглядит интересно: https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html#getTemporaryDir() Я могу создать его там и просто сделать из «mytempfile» .. , –

Смежные вопросы