我有一个具有以下结构的个人 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.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'
}
现在,当我执行 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.0
or 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]