Gradle 1.2: Exclude directory under resources sour

2019-01-12 06:51发布

问题:

I have development related directory src/main/resources/certs/test which is needed for one external library. This has some cert files which are not needed in production build.

At the moment I exclude everything under that directory with following block in build.gradle:

sourceSets {
    main {
        resources {
            exclude '**/test/*'
        }
    }
}

This does it job well, but leaves ugly empty directory test lying there. What are my options to not include this directory in final war?

I've tried excluding '**/test', but it doesn't work at all.

I use war plugin and Gradle 1.2

回答1:

Using Gradle 1.1, this works for me:

apply plugin: 'war'

sourceSets {
    main {
        resources {
            exclude '**/test/*'
            exclude 'certs/test'
        }
    }
}


回答2:

I had a similar problem with production files in a JAR file (though mine were not test files). I solved it with the following:

jar {
    exclude ("DIRECTORY-TO-EXCLUDE/**")
}

e.g.

jar {
    exclude ("test/**")
}


回答3:

A common projet layout is to put test files under the test source set, this way you don't have to exclude them from the main source set.

From the Gradle documentation, the default project layout is like this:

src/main/java       Production Java source
src/main/resources  Production resources
src/test/java       Test Java source
src/test/resources  Test resources


标签: gradle