0

みんな

ここにビルドスクリプトがあります

apply{
    plugin 'java'
}

    sourceCompatibility=1.5

    List spring = ["org.springframework:spring-webmvc:$springVersion@jar",
                   "org.springframework:spring-orm:$springVersion@jar",
                   "org.springframework:spring-context-support:$springVersion@jar"]

    List spring_js = [ "org.springframework.webflow:spring-js:2.0.7.RELEASE@jar",
                       "org.apache.ibatis:com.springsource.com.ibatis:2.3.4.726@jar",
                       "com.caucho:com.springsource.com.caucho:3.2.1@jar",
                       "org.apache.axis:com.springsource.org.apache.axis:1.4.0@jar",
                       "javax.wsdl:com.springsource.javax.wsdl:1.6.1@jar"]

    configurations {
        compile {
            description = 'compile classpath'
            transitive = true
        }
        runtime {
            extendsFrom compile
        }
    }

    def localMavenRepo = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath

    repositories{
        mavenCentral()
        maven{
            url localMavenRepo
        }
    }

    dependencies{
        compile spring, spring_js, 'commons-fileupload:commons-fileupload:1.2.1','org.apache.struts:com.springsource.org.apache.struts:1.2.9',
                'javax.xml.rpc:com.springsource.javax.xml.rpc:1.1.0','org.apache.commons:com.springsource.org.apache.commons.dbcp:1.2.2.osgi',
                'commons-io:commons-io:1.3.2','hsqldb:hsqldb:1.8.0.7','org.apache.tiles:tiles-jsp:2.2.0','org.tuckey:urlrewritefilter:3.1.0',
                'org.apache.tiles:tiles-core:2.2.0'
        runtime 'javax.servlet:jstl:1.2','org.aspectj:aspectjweaver:1.6.5','javax.servlet:servlet-api:2.5','javax.servlet.jsp:jsp-api:2.1'
        testCompile 'junit:junit:4.6'
    }

jar はローカルの Maven リポジトリに存在しますが、gradle --info clean build を実行すると、次のようなエラーでビルドが失敗します。

/home/anadi/Code/gradle-samples/java-proj/gradleSpringJpetStore/src/main/java/org/springframework/samples/jpetstore/web/spring/SignonInterceptor.java:17: cannot find symbol
symbol  : class HttpServletResponse
location: class org.springframework.samples.jpetstore.web.spring.SignonInterceptor
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                                                         ^
/home/anadi/Code/gradle-samples/java-proj/gradleSpringJpetStore/src/main/java/org/springframework/samples/jpetstore/web/spring/RemoveItemFromCartController.java:9: package org.springframework.web.util does not exist
import org.springframework.web.util.WebUtils;
                                   ^

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

BUILD FAILED

Total time: 4.969 secs

同じビルドを maven で実行すると、ローカル リポジトリからすべての依存関係が取得され、正常にコンパイルされます。--refresh-dependencies スイッチも試しましたが、助けにはなりませんでした。

4

1 に答える 1

1

Benjamin が言ったように、依存関係の宣言が欠落している可能性があります。@jarを使用すると、推移的な依存関係の解決が無効になることに注意してください。@jar「POMで宣言された依存関係ではなく、このJarだけが欲しい」という意味です。

ローカルの Maven リポジトリを宣言する推奨される方法は、repositories { mavenLocal() }. 他のビルドをローカルの Maven リポジトリにインストールし、このビルドをそこからプルしていない限り、宣言することは推奨されておらず、必要でもありませんmavenLocal()。Gradle は、チェックサムが一致する場合、Jar をローカルの Maven リポジトリから (ダウンロードを回避するために) 自動的に盗むほどスマートです。

あなたのconfigurationsブロックは完全に取り除くことができます。javaこれらはすべて、プラグインによってすでに構成されています。

于 2012-07-12T22:44:27.360 に答える