我有一个具有以下结构的个人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
目录中的内容是适当的库,而不是形式(我在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
,则也找不到那些。
我想知道+
的目的是什么,如果它没有在回购中找到最新的库。它是否仅跟踪第一个版本号?或者以某种方式离开约会?
修改
根据建议,我尝试制作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
答案 0 :(得分:0)
"com.mycompany.core:core:latest.integration"
应该做到这一点。 ("com.mycompany.core:core:+"
在某些Gradle版本中具有相同的效果,但只会匹配其他Gradle版本中的版本(即非快照)。获取最新版本的安全方法是latest.release
。{ {1}}不一定是必要的(假设已发布包含正确包装类型的POM)并且将禁用传递依赖性解析,这通常不是您想要的。