Как я могу сказать Gradle использовать новейшую библиотеку, снимок или нет?

У меня есть личная настройка репозитория 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]

person jwir3    schedule 18.12.2014    source источник
comment
Когда вы используете 1.1.+ или 1.2.+, вы получаете то, что хотите? Из этого ответа видно, что Gradle может использовать Синтаксис средства сопоставления версий Ivy, который может подсказать вам другие варианты синтаксиса, которые стоит попробовать.   -  person CommonsWare    schedule 19.12.2014
comment
Позвольте мне попробовать это, и я дам вам знать. Спасибо за предложение.   -  person jwir3    schedule 19.12.2014


Ответы (1)


"com.mycompany.core:core:latest.integration" должно помочь. ("com.mycompany.core:core:+" будет иметь тот же эффект в некоторых версиях Gradle, но будет соответствовать только выпускам (т. е. не снимкам) в других версиях Gradle. Безопасный способ получить последнюю версию выпуска — latest.release.) POM с правильным типом упаковки публикуется) и отключает транзитивное разрешение зависимостей, что обычно не то, что вам нужно.

person Peter Niederwieser    schedule 19.12.2014
comment
Извините за поздний ответ... праздники и все такое. ;) Я отредактировал свой вопрос выше с исключением, которое я вижу, когда пытаюсь использовать latest.integration. - person jwir3; 20.12.2014
comment
Я должен был бы увидеть --stacktrace. Попробуйте последнюю версию Gradle. - person Peter Niederwieser; 21.12.2014