2016-11-18 2 views
1

Я хочу поделиться с вами своей проблемой. Возможно, кто-то тоже столкнулся с этой проблемой и будет иметь решение. Вкратце Gradle не разрешает часто меняющиеся зависимости. Мы используем:Управление «зависимостями» смены «0»

./gradlew -v 

------------------------------------------------------------ 
Gradle 2.12 
------------------------------------------------------------ 

Build time: 2016-03-14 08:32:03 UTC 
Build number: none 
Revision:  b29fbb64ad6b068cb3f05f7e40dc670472129bc0 

Groovy:  2.4.4 
Ant:   Apache Ant(TM) version 1.9.3 compiled on December 23 2013 
JVM:   1.8.0_66 (Oracle Corporation 25.66-b17) 
OS:   Linux 2.6.18-409.el5 amd64 

Позвольте мне объяснить, что случилось. У нас есть проект, который зависит от другого независимого проекта. Оба находятся в активной разработке. Одним из них является: строка-парсер версия: 1.0.0-SNAPSHOT Во-вторых: инструменты-Utils версии: 2.2.0-SNAPSHOT У нас есть внутренний Maven Artifactory и мы настроили его в струнной-парсера:

# some code there 
configurations.all { 
    resolutionStrategy.cacheChangingModulesFor 0, TimeUnit.MILLISECONDS 
} 

repositories { 
    mavenLocal() 
    maven { url 'https://some.internal.com/deploy-snapshot'} 
    maven { url 'https://some.internal.com/deploy-release'} 
    } 

dependencies { 
# Some other dependencies listed here 
    compile('com.some.group:tools-utils:2.2.0-SNAPSHOT') { 
    changing = true 
    } 
} 

Так что, когда мы делаем изменения в локальной рабочей станции (Windows - я думаю, что это не имеет значения) для инструментов-Utils и загрузить последний снимок артефакт версию Maven локальные и удаленные все в порядке. Мы переходим к string-parser проект нажмите кнопку «reimport» (в Intellij Idea 2016.1.2) и переключатель «Грейдл», чтобы исправить версию зависимостей. Но если кто-то делает некоторые изменения и загружает новую версию в Maven remote, он не будет обновлять зависимость в кеше и все еще указывать на старую версию. Чтобы исправить это, мы вручную удалили артефакт из кеша Gradle и (!) Из Maven Local.

Не могли бы вы посоветовать мне что-то, потому что очистка кеша вручную (или с добавлением шага на TeamCity) - это кошмар?

+0

Вы пробовали удаление 'изменение = true'? Кэширование должно быть отключено с учетом вашей 'resolutionStrategy' – JBirdVegas

+0

Вы используете Gradle из командной строки? Если это так, попытались ли вы добавить параметр -refresh-dependencies? –

ответ

0

Попробуйте положить это в allprojects

// forces all changing dependencies (i.e. SNAPSHOTs) to automagicially download 
    // (thanks, @BillBarnhill!) 
    configurations.all { 
     resolutionStrategy { 
      cacheChangingModulesFor 0, 'seconds' 
     } 
    } 

Source: Gradle-Fury

+0

Большое вам спасибо! Это работает правильно. –

Смежные вопросы