2016-04-07 1 views
1

Если у меня есть Gradle файл как этотНабор FileMode для * .sh При копировании файлов Tar По Конвенции

apply plugin: 'distribution' 

version = '1.2' 
distributions { 
    custom {} 
} 

По соглашению, все файлы в «/ дист ЦСИ/пользовательский» каталог будет автоматически быть включенным в распределение. https://docs.gradle.org/current/userguide/distribution_plugin.html

Что делать, если я хочу установить fileMode для некоторых из этих файлов?

Если я просто укажу fileMode, он ничего не сделает.

into("") { 
    from "src/custom/scripts" 
    fileMode 0755 
    } 

EDIT:. Если я поставил скрипты в другой директории и явно копировать их (а не их копирование по соглашению, код ниже работ

distributions { 
    custom { 
    baseName = 'myApp' 
    contents { 
     into("") { 
     from "src/external/scripts" 
     fileMode 0755 
     } 
    } 
    } 

мне интересно, если это возможно . есть файлы в обычном месте, но изменить атрибуты на некоторых из файлов

+0

Из [примеров копирования] (https://github.com/gradle/gradle/blob/f490bdf61bd9b4f5383cd9fb0d8ffbca93da8c32/subprojects/core/src/integTest/groovy/org/gradle/api/tasks/CopyPermissionsIntegrationTest.groovy) Я ищу at, возможно, что fileMode необходимо установить в спецификации копирования, а не внутри '' 'закрытия. Можете ли вы попытаться вытащить его из крышки? – RaGe

ответ

0

После @RaGe ссылки, которую я придумал это:

distributions { 
    custom { 
    baseName = 'myApp' 
    contents { 
     //Other stuff 
     eachFile { file -> 
     if(file.getName().endsWith(".sh")) { 
      file.setMode(0755) 
     } 
    } 
    } 
Смежные вопросы