1

我有一个具有以下结构的个人 Maven 回购设置:

root (accessible via http)
 - maven/
   - com/
     - mycompany/
       - core/
         - core/
           - 1.1.0-SNAPSHOT/
           - 1.1.0/
           - maven-metadata.xml
           - maven-metadata.xml.md5
           - maven-metadata.xml.sha1

现在,1.1.01.1.0-SNAPSHOT目录内部是适当的库,以 aar 形式(我在 android 上运行)。在我想利用这个库的 build.gradle 文件的项目中,我有以下内容:

repositories {                                                                  
    maven { url 'http://builds.myserver.net/maven' }

}
dependencies {
      compile 'com.mycompany.core:core:1.1.0@aar'                       
}

现在,当我执行 a 时./gradlew --refresh-dependencies,它当然会下载版本1.1.0(不是1.1.0-SNAPSHOT)。如果我将依赖项更改为compile 'com.mycompany.core:core:1.1.0-SNAPSHOT@aar',那么它会找到适当的 SNAPSHOT。这一切都很好,但我真正想要的是能够指定最新的版本。因此,例如,如果我有 library 的一个版本1.2.0,它应该找到那个,或者1.2.0-SNAPSHOT,它应该找到那个。我试过compile 'com.mycompany.core:core:1.1.0+@aar'了,但仍然只能找到 version 1.1.0,而不是1.1.0-SNAPSHOT,而且,如果我有1.2.0or 1.2.0-SNAPSHOT,它也找不到那些。

我想知道+如果它没有在 repo 中找到最新的库,它的目的到底是什么。它是否只跟踪第一个版本号?还是以某种方式过时?

编辑:

正如建议的那样,我尝试进行build.gradle参考latest.integration,如:compile 'com.mycompany.core:core:latest.integration' (I also removed the@aar ), but when I run./gradlew --refresh-dependencies`,我看到以下内容:

> Could not resolve all dependencies for configuration
> Could not resolve com.mycompany.core:core:latest.integration.
     Required by:
         my-project:MyApp:unspecified
      > java.lang.NullPointerException (no error message)

我想知道这是否是由于旧版本的 gradle 造成的。看起来我们正在使用:

mustafar scottjohnson$ ./gradlew --version

------------------------------------------------------------
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.6.0_65 (Apple Inc. 20.65-b04-466.1)
OS:           Mac OS X 10.10.1 x86_64

看来,当我运行它时--info,它仍在寻找1.2.0(而不是1.2.0-SNAPSHOT

Resource missing. [HTTP GET: http://builds.myserver.net/maven/com/mycompany/core/core/1.2.0/core-1.2.0.pom]
Resource missing. [HTTP HEAD: http://builds.myserver.net/maven/com/mycompany/core/core/1.2.0/core-1.2.0.aar]
4

1 回答 1

0

"com.mycompany.core:core:latest.integration"应该做的伎俩。("com.mycompany.core:core:+"在某些 Gradle 版本中将具有相同的效果,但只会匹配其他 Gradle 版本中的版本(即非快照)。获取最新版本的安全方法是latest.release。)@aar不应该是必需的(假设 POM 具有正确的打包类型已发布)并将禁用传递依赖解析,这通常不是您想要的。

于 2014-12-19T17:23:46.213 回答