Gradleのwarプラグインでは、servlet apiの依存性を追加するために
dependencies { ... providedCompile 'javax.servlet:servlet-api:2.5' ... }
という設定が使えるようになっています。
実は、"providedCompile"という依存性の指定はwarプラグイン独自に追加しているもので、通常のjavaプラグインだけのプロジェクトでは使えません。
上記のような、「コンパイルの時はクラスパスに入れるけど、配布用のパッケージングからは外す」タイプの依存性は、Mavenでは"provided" scopeで実現出来ます。
これと同等の仕組みをGradleで使おうとすると、warプラグインを(そのためだけにわざわざ)追加するか、あるいは以下の様なwork-arroundがあります。
※特に手元で検証したわけではないので、参考情報程度で。
こんな感じで、"optional"と"provided"という依存性セットが使えるようになるそうです。
dependencies { compile("commons-logging:commons-logging:1.1.1") optional("log4j:log4j:1.2.17") provided("javax.servlet:javax.servlet-api:3.0.1") testCompile("junit:junit:4.11") }
参考:
configurations { provided } sourceSets { main.compileClasspath += configurations.provided test.compileClasspath += configurations.provided test.runtimeClasspath += configurations.provided } dependencies { provided 'org.apache.ant:ant:1.8.4' }
Eclipse/IDEAなど、IDE側でGradleプロジェクトを読み込んだ時の調整についても考慮する必要があるようです。