How to combine same code of different tasks

2019-09-02 19:18发布

问题:

This question is related to Apply same configurations to different tasks

In gradle, I have this piece of configuration:

idea {
    module {
        excludeDirs -= file("$buildDir/")
        sourceDirs += file(generatedSrcDir)
    } 
}

I have another one for eclipse with same code.

Question:

idea, eclipse {
    module {
        excludeDirs -= file("$buildDir/")
        sourceDirs += file(generatedSrcDir)
    }
}

is this possible ?

回答1:

What you need to do would be written as the following:

apply plugin: 'idea'
apply plugin: 'eclipse'

ext.generatedSrcDir = project.file('.')

[idea, eclipse].each {
    configure(it) {
        module {
            excludeDirs -= file("$buildDir/")
            sourceDirs += file(generatedSrcDir)
        }
    }
}

but since eclipse extension does not expose module method/field it will not work. Unfortunately you need to configure both idea and eclipse separately. Here is a question on configuring additional source folder for eclipse.