【发布时间】:2015-02-17 21:19:19
【问题描述】:
我有一个具有以下结构的个人 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.0 和 1.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'
}
现在,当我执行./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.0 或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]
【问题讨论】:
-
当你使用
1.1.+或1.2.+时,你得到你想要的了吗?从this answer 看来,Gradle 可能会使用Ivy version matcher syntax,这可能会给您提供其他语法思路来尝试。 -
让我试试,我会告诉你的。感谢您的建议。