Gradle: как я могу скопировать папку из другого проекта в многопроектный скрипт?

У меня есть многопроектный скрипт:

dependencies {
    compile '...'
    ...

    compile project(':component1')
    runtime project(':component2')
}

Мне нужно скопировать папку «bin» из component1 и component2 в папку «bin» текущего проекта.

ОБНОВЛЕНИЕ: мне нужно, чтобы в Eclipse можно было «Запускать от имени» -> «Запускать на сервере». Каждый проект содержит код Java и файлы веб-интерфейса и зависит от других проектов в рабочей области. «Сборка развертывания» не позволяет копировать скомпилированные классы из другого проекта.


person isobretatel    schedule 15.01.2014    source источник
comment
В gradle есть задача копирования. Настройте и подключите его к процессу сборки   -  person Eugen Martynov    schedule 15.01.2014
comment
Это Java-проект?   -  person Eugen Martynov    schedule 15.01.2014
comment
Да, проект Java Eclipse.   -  person isobretatel    schedule 15.01.2014


Ответы (1)


Я не понимаю вашего требования полностью копировать папки.

Но здесь пользовательская задача копирования:

task copyBin(type: Copy) {
    from project(':component1').file('bin')
    into file('bin')
}

И подключитесь к процессу сборки:

jar.dependsOn copyBin
person Eugen Martynov    schedule 15.01.2014
comment
Я не хочу жестко кодировать зависимости в задаче копирования, они уже определены в зависимостях. Хитрость в том, как перебирать зависимости в задаче копирования? - person isobretatel; 15.01.2014
comment
Также возможно - forums.gradle.org/gradle/topics/ - person Eugen Martynov; 16.01.2014
comment
Я пробовал следующее: задача copyProjectDependenciesToBinFolder(type: Copy) { FileCollection binFoldersFromProjectDependencies = project.configurations .collectMany {it.allDependencies} .findAll { it instanceof ProjectDependency}.file('bin') из binFoldersFromProjectDependencies в файл('bin')} , но выдает ошибку: невозможно преобразовать объект «[]» с классом «java.util.ArrayList» в класс «org.gradle.api.file.FileCollection» из-за: groovy.lang.GroovyRuntimeException: не удалось найти соответствующий конструктор для: org.gradle.api.file.FileCollection() - person isobretatel; 18.01.2014