Gradle: How can I copy folder from another project in multi-project script?

10,008

I don't understand you requirement to copy folders fully.

But here custom copy task:

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

And hook into your build process:

jar.dependsOn copyBin
Share:
10,008
isobretatel
Author by

isobretatel

Updated on July 31, 2022

Comments

  • isobretatel
    isobretatel almost 2 years

    I have a multi-project script:

    dependencies {
        compile '...'
        ...
    
        compile project(':component1')
        runtime project(':component2')
    }
    

    I need to copy folder "bin" from component1 and component2 into folder "bin" of the current project.

    UPDATE: I need this to be able to "Run as"->"Run on Server" in Eclipse. Each project has Java code and Web UI files, and depends on other projects in workspace. "Deployment Assembly" does not allow copying of compiled classes from another project.

  • isobretatel
    isobretatel over 10 years
    I don't want to hardcode dependencies in the copy task, they are already defined in "dependencies". The trick is: how to loop through dependencies in the copy task?
  • Eugen Martynov
    Eugen Martynov over 10 years
    It is also possible - forums.gradle.org/gradle/topics/…
  • isobretatel
    isobretatel over 10 years
    I tried the following: task copyProjectDependenciesToBinFolder(type: Copy) { FileCollection binFoldersFromProjectDependencies = project.configurations .collectMany { it.allDependencies } .findAll { it instanceof ProjectDependency }.file('bin') from binFoldersFromProjectDependencies into file('bin') } , but it gives me error: Cannot cast object '[]' with class 'java.util.ArrayList' to class 'org.gradle.api.file.FileCollection' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: org.gradle.api.file.FileCollection()