У меня есть личная настройка репозитория 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'
}
Теперь, когда я делаю ./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), 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.+
, вы получаете то, что хотите? Из этого ответа видно, что Gradle может использовать Синтаксис средства сопоставления версий Ivy, который может подсказать вам другие варианты синтаксиса, которые стоит попробовать. - person CommonsWare   schedule 19.12.2014