1. ホーム
  2. gradle

[解決済み] Gradleで、共通の依存関係を一箇所で宣言するにはどうしたらいいですか?

2022-08-26 07:27:17

質問

Maven には非常に便利な機能があり、依存関係を <dependencyManagement> セクションで依存関係を定義し、バージョンやスコープなどを指定することなく子モジュールからその依存関係を参照することができるという、非常に便利な機能があります。

Gradleの代替案は何ですか?

どのように解決するのですか?

親スクリプトで共通の依存関係を宣言することができます。

ext.libraries = [ // Groovy map literal
    spring_core: "org.springframework:spring-core:3.1",
    junit: "junit:junit:4.10"
]

子スクリプトからは、このように依存関係の宣言を利用することができます。

dependencies {
    compile libraries.spring_core
    testCompile libraries.junit
}

依存関係の宣言を高度な設定オプションと共有するために DependencyHandler.create :

libraries = [
    spring_core: dependencies.create("org.springframework:spring-core:3.1") {
        exclude module: "commons-logging"
        force = true
    }
]

複数の依存関係を同名で共有することができます。

libraries = [
    spring: [ // Groovy list literal
        "org.springframework:spring-core:3.1", 
        "org.springframework:spring-jdbc:3.1"
    ]
]

dependencies { compile libraries.spring } とすると、両方の依存関係を一度に追加します。

この方法で共有できない情報のひとつは、どのような設定( スコープ に割り当てられるべきかということです。しかし、私の経験では、いずれにせよ、これについては明示的である方がよいでしょう。