home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Groovy/Gradle/Equivalent to Maven's "provided" scope

Groovy/Gradle/Equivalent to Maven's "provided" scope

Groovy / Gradle / Equivalent to Maven's "provided" scope
id: 1186 所有者: msakamoto-sf    作成日: 2013-04-13 16:41:26
カテゴリ: Groovy 

Gradleのwarプラグインでは、servlet apiの依存性を追加するために

dependencies {
  ...
  providedCompile 'javax.servlet:servlet-api:2.5'
  ...
}

という設定が使えるようになっています。
実は、"providedCompile"という依存性の指定はwarプラグイン独自に追加しているもので、通常のjavaプラグインだけのプロジェクトでは使えません。

上記のような、「コンパイルの時はクラスパスに入れるけど、配布用のパッケージングからは外す」タイプの依存性は、Mavenでは"provided" scopeで実現出来ます。
これと同等の仕組みをGradleで使おうとすると、warプラグインを(そのためだけにわざわざ)追加するか、あるいは以下の様なwork-arroundがあります。

※特に手元で検証したわけではないので、参考情報程度で。

"SpringSource Gradle Plugins" を使う。

こんな感じで、"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")
}

カスタムのConfigurationを追加して手動でクラスパスに追加する。

参考:

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プロジェクトを読み込んだ時の調整についても考慮する必要があるようです。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-04-13 16:57:52
md5:bffd7d1269d796519903516462e30ed1
sha1:fe72f05cf79bf223a4fbfb9b40f975c5a32b2158
コメント
コメントを投稿するにはログインして下さい。