繁体   English   中英

为什么我的gradle构建失败,但是gradlew构建成功?

[英]why is my gradle build failing but gradlew build is successsful?

我有一个我要构建的gradle项目。

当我执行gradle clean build ,它失败并显示以下错误消息

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':FacebookUpdateDependencies'.
> Could not resolve all dependencies for configuration ':compiler'.
   > Could not resolve com.company.facebook:compiler:1.2+.
     Required by:
         ::1.0
      > Could not resolve com.company.facebook:compiler:1.2+.
         > Failed to list versions for com.company.facebook:compiler.
            > Unable to load Maven meta-data from http://mycompanynexus/compiler/maven-metadata.xml.
               > Could not GET 'http://mycompanynexus/compiler/maven-metadata.xml'. Received status code 500 from server: Internal Server Error

但是,当我尝试./gradlew clean build ,构建成功。

为什么在前者而非后者中构建失败?

这是build.gradle的相关部分

task wrapper(type: Wrapper) {
    gradleVersion = '2.11'
}

编辑

local$: gradle -v

------------------------------------------------------------
Gradle 2.13
------------------------------------------------------------

Build time:   2016-04-25 04:10:10 UTC
Build number: none
Revision:     3b427b1481e46232107303c90be7b05079b05b1c

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.7.0_79 (Oracle Corporation 24.79-b02)
OS:           Mac OS X 10.11.1 x86_64

local$ ./gradlew -v

------------------------------------------------------------
Gradle 1.12
------------------------------------------------------------

Build time:   2014-04-29 09:24:31 UTC
Build number: none
Revision:     a831fa866d46cbee94e61a09af15f9dd95987421

Groovy:       1.8.6
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
Ivy:          2.2.0
JVM:          1.7.0_79 (Oracle Corporation 24.79-b02)
OS:           Mac OS X 10.11.1 x86_64

我只是注意到包装器版本是1.12而不是2.12 也就是说,包装器和已安装的gradle版本之间存在很大的版本差异。 在过去的两年中,不同的gradle插件可能进行了许多不兼容的更改,这可能会导致您观察到构建问题。

如前所述,gradle包装器是gradle的单独版本,位于项目的gradle/wrapper文件夹中。 仅在项目中执行wrapper任务时( gradle wrapper ),才会构建/更新wrapper gradle wrapper 那是您的项目的包装器在过去两年中没有更新,或者最初使用错误的版本( 1.12而不是2.11 )创建。

鉴于以上所述,很难确定到底是什么导致构建失败-除了gradle 1.122.13之间的不兼容性。 但是此版本不匹配可能是导致问题的根本原因。

一旦使用2.11版(在构建文件中提到的版本)重新生成包装器,您的项目很可能不再使用该包装器构建,因为2.11也可能与1.12不兼容...

这告诉您,调用gradlew命令时将使用Gradle 2.11版,而不是系统上安装的Gradle版本。 始终运行gradlew命令,因为它可以确保您的构建可以在应该使用的gradle版本上运行,而您无需安装正确版本的gradle并可以真正加快构建时间。

这是Gradle Wrapper定义的摘录:

大多数工具都需要在计算机上安装后才能使用。 如果安装简单,您可能会认为很好。 但这可能会对构建的用户造成不必要的负担。 同样重要的是,用户是否会为构建安装正确版本的工具? 如果他们正在构建软件的旧版本怎么办?

Gradle包装器(以下称为“包装器”)解决了这两个问题,是开始Gradle构建的首选方法。 如果Gradle项目已设置包装器(我们建议所有项目都这样做),则可以从项目根目录使用以下命令之一执行构建:

./gradlew(在类似Unix的平台上,例如Linux和Mac OS X)gradlew(在Windows上使用gradlew.bat批处理文件)每个包装器都与特定版本的Gradle绑定在一起,因此,当您首次运行上述命令之一时对于给定的Gradle版本,它将下载相应的Gradle发行版并使用它执行构建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM