如何告诉gradle使用最新的库,快照还是不使用?

时间:2014-12-18 23:31:21

标签: android maven gradle aar

我有一个具有以下结构的个人maven repo设置:

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目录中的内容是适当的库,而不是形式(我在android上运行)。在我想要利用这个库的build.gradle文件的项目里面,我有以下内容:

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

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

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

我想知道+的目的是什么,如果它没有在回购中找到最新的库。它是否仅跟踪第一个版本号?或者以某种方式离开约会?

修改

根据建议,我尝试制作build.gradle引用latest.integration,如:compile 'com.mycompany.core:core:latest.integration' (I also removed the {aar {{}}}。/ gradlew --refresh-dependencies`,我看到了以下内容:

), but when I run

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

> 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)

当我使用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

1 个答案:

答案 0 :(得分:0)

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