8

Maven プロジェクトを gradle に移行しようとしています。変数springVersionですべてのプロジェクトの spring バージョンを指定します。しかし、何らかの理由で、特定の依存関係org.springframework:spring-web:springVersionでビルドが失敗します。バージョンを直接入力すると、org.springframework:spring-web:3.1.2.RELEASEがすべてコンパイルされます。これが私のbuild.gradleファイルです:

subprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse-wtp'

    ext {    
        springVersion = "3.1.2.RELEASE"
    }
    repositories {
       mavenCentral()
    }

    dependencies {
        compile 'org.springframework:spring-context:springVersion'
        compile 'org.springframework:spring-web:springVersion'
        compile 'org.springframework:spring-core:springVersion'
        compile 'org.springframework:spring-beans:springVersion'

        testCompile 'org.springframework:spring-test:3.1.2.RELEASE'
        testCompile 'org.slf4j:slf4j-log4j12:1.6.6'
        testCompile 'junit:junit:4.10'
    }

    version = '1.0'

    jar {
        manifest.attributes provider: 'gradle'
    }
}

エラーメッセージ:

* What went wrong:
Could not resolve all dependencies for configuration ':hi-db:compile'.
> Could not find group:org.springframework, module:spring-web, version:springVersion.
  Required by:
      hedgehog-investigator-project:hi-db:1.0

テスト実行時の org.springframework:spring-test:3.1.2.RELEASE も同様です。

彼の問題の原因とそれを解決する方法は何ですか?

4

2 に答える 2

29

springVersionバージョンとして、文字通りを使用しています。依存関係を宣言する正しい方法は次のとおりです。

// notice the double quotes and dollar sign
compile "org.springframework:spring-context:$springVersion"

これは、Groovy の二重引用符で囲まれた文字列の際立った機能である Groovy String 補間を使用しています。または、Java の方法で実行する場合は、次のようにします。

// could use single-quoted strings here
compile("org.springframework:spring-context:" + springVersion)

後者はお勧めしませんが、コードが機能しない理由を説明するのに役立つことを願っています。

于 2012-09-23T14:51:08.130 に答える
3

Or you can define lib version via variable in dependencies like this:

dependencies {

    def tomcatVersion = '7.0.57'

    tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
           "org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}"
    tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
           exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj'
    }

}
于 2014-12-18T12:45:35.103 に答える