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

Java 为什么我的gradle构建失败了,但是gradlew构建成功了?,java,gradle,war,Java,Gradle,War,我有一个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'. &

我有一个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

这告诉您,当调用
gradlew
命令而不是系统上安装的命令时,将使用Gradle版本2.11。始终运行
gradlew
命令,因为它可以确保您的构建是按照预期的gradle版本运行的,因此您永远不需要安装正确版本的gradle,从而真正加快构建速度

以下是Gradle包装器定义的摘录:

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

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

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

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

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

鉴于上述情况,除了gradle
1.12
2.13
之间的不兼容之外,很难判断到底是什么导致构建失败。但这种版本不匹配可能是问题的根本原因


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

我认为,
gradlew
是成功完成的先前版本,当前构建失败并且无法生成新的包装器看起来gradlew和gradle使用的是不同版本的gradle,但是为什么它无法连接到repo。该错误似乎没有反映版本问题\n包装器仅在执行
gradle wrapper
时生成,而不是在每次生成时生成。您可能应该尝试生成一个新的包装,因为当前包装的版本与生成文件中指定的版本不同。
mycompanynexus
是存储库服务器的真实名称,还是已对此问题进行了编辑?这可能与两个不同版本的gradle使用的不同网络设置有关。包装器的gradle主目录通常是根项目中的
gradle/wrapper
目录。属性文件中可能有一些附加设置,这些设置仅由包装器使用,而不是“常规”版本的gradle。两个gradle版本的输出有趣的是,安装的gradle不打印任何常春藤版本。可能安装的gradle缺少一些用于依赖项解析的常春藤组件,这些组件在gradle包装器中可用。不,它告诉我们包装器版本与构建文件中的版本不匹配。在将版本设置为2.11之后,可能没有再次生成包装器。但是,这并不能解释为什么无法使用安装的gradle版本构建项目。对于上述注释,请尝试运行此命令
gradle包装器——gradle 2.11版
后接
gradle干净构建