2013-09-16 3 views
1

Как синхронизировать два каталога после выполнения задачи? Я могу сделать это вот так:Синхронизация каталогов с Gradle

task syncDirs(type: Sync) { 
    ... 
} 

task someTask { 
    doLast { 
     syncDirs.execute() 
    } 
} 

Но метод «выполнить» является внутренним, и я должен его избегать.
Спасибо за ответ заранее.

ответ

1

В зависимости от ваших конкретных нужд, вы можете использовать syncDirs.dependsOn(someTask) или вызовите delete и copyМетоды внутри someTask.doLast (это как Sync реализуется в настоящее время).

+1

Я хочу рассматривать выполнение «someTask» и синхронизацию как одно действие, поэтому я использую методы «copy» и «ant.delete» в «doLast». Но я думаю, что поскольку «Проект» имеет метод «копировать», то есть похож на задачу «Копировать», было бы неплохо иметь метод «sync», аналогичный задаче «Синхронизация». В любом случае спасибо за ответ. – briarheart

+0

Вы можете использовать 'delete' Gradle вместо' ant.delete'. –

+0

Да, но насколько я знаю, «удаление» Gradle не позволяет использовать подстановочные знаки (например, 'include:" **/*. Java "'). – briarheart

1
task myTask << { 

    copy { 
     from 'src_dir' 
     into 'dst_dir' 
     include 'myfile.txt' 
    } 

    sync { 
     from "src_dir/foo" 
     into "dst_dir/bar" 
    } 
} 

В Gradle 1.10 вы можете делать такие вещи, как файлы копирования и синхронизировать все в одной задаче. Я предпочитаю, чтобы у него были отдельные задачи для копирования и синхронизации.

Для синхронизации идея создания отдельного удаления и копирования, как было предложено выше, кажется утомительной. Я рад, что могу позвонить sync, чтобы сделать то и другое.

+0

Да, я нашел метод 'sync', когда я собирался написать свой собственный плагин для этой задачи. :) В любом случае спасибо за ответ. – briarheart

+0

Блоки синхронизации внутри других задач, по-видимому, сломаны или удалены в версии 2.0. Вы тоже это испытали? – billmag

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