首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gradle构建在类路径中不包含jars

gradle构建在类路径中不包含jars
EN

Stack Overflow用户
提问于 2012-07-12 13:13:28
回答 1查看 5.4K关注 0票数 0

所有人

以下是构建脚本

代码语言:javascript
复制
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'
    }

jars存在于本地maven repo中,但是当我运行gradle --info clean build时,构建会失败,并出现如下错误

代码语言:javascript
复制
/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开关,但没有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-13 06:44:27

正如本杰明所说,你可能遗漏了一个依赖声明。请注意,使用@jar会禁用传递依赖项解析。@jar的意思是“我只想要这个Jar,而不是它的POM中声明的任何依赖项”。

声明本地Maven存储库的首选方式是repositories { mavenLocal() }。除非您已经将一些其他构建安装到本地Maven存储库中,并且此构建从本地Maven库中提取,否则既不建议也不需要声明mavenLocal()。Gradle足够聪明,如果它们的校验和匹配,就会自动从本地Maven存储库窃取Jars (以避免下载它们)。

您的configurations块可以完全删除。所有这些都已经由java插件配置好了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11445346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档