简体   繁体   中英

Filter class files from compiled sourcesets to be added in a JAR in Gradle/Groovy

I'm trying to include the compiled .class files from Project1 into the jar for Project2 since my project structure requires it to be done. For that, in the build.gradle for Project2 , I write :

jar {
    from project(':Project1').sourceSets.main.output.classesDir
}

Which successfully does what I had to do. But, I now want to filter some of the classes that are added based on path and/or some pattern. For example, to include only delegate files, I tried this :

jar {
    from project(':Project1').sourceSets.main.output.classesDir {
        include '**/*Delegate*.class'
    }
}

But unfortunately it doesn't work. Is there a way to achieve this in Gradle/Groovy?

Using Gradle 2.12, the following works for me (this is build.gradle for Project 2):

task myBuild(type: Jar) {
    baseName "myjar"
    from project(':Project1').sourceSets.main.output.classesDir, 
         { include "**/*Delegate*.*" } 
}

From the doc for Jar.from , note that it takes 2 arguments (hence, the comma is used).

Thanks Michael

Although I got my answer as well, I was just missing a parantheses. The correct and working code goes something like this :

jar {
    from (project(':Project1').sourceSets.main.output.classesDir) {
        include '**/*Delegate*.class'
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM