2016-02-04 4 views
1

Я хочу использовать репозиторий maven с кэшированными артефактами, которые у меня есть на моем локальном компьютере, чтобы ускорить сборку Gradle, избегая их загрузки.Получение Gradle для использования артефакта из локального репозитория maven

К сожалению, я заметил, что, хотя локальный репозиторий указан первым, и он имеет необходимую мне зависимость, Gradle будет извлекать артефакт из Интернета, если доступно подключение к Интернету, и будет использовать только локальный репозиторий, если есть это проблема с подключением к сети.

Вот один конкретный маленький пример, который воспроизводит эту проблему:

build.gradle:

apply plugin: 'java' 

repositories { 
    maven { 
    name 'cache' 
    url "/home/vagrant/m2copy" 
    } 
    jcenter() 
} 

dependencies { 
    compile 'com.google.code.gson:gson:2.4' 
} 

jar { 
    manifest { 
    attributes 'Created-By': 'Ekumen' 
    } 
} 

Содержание /дома/бродяга/m2copy:

m2copy: 
com 

m2copy/com: 
google 

m2copy/com/google: 
code 

m2copy/com/google/code: 
gson 

m2copy/com/google/code/gson: 
gson 

m2copy/com/google/code/gson/gson: 
2.4 

m2copy/com/google/code/gson/gson/2.4: 
gson-2.4.jar 
gson-2.4.jar.sha1 
_remote.repositories 

И выход конструкции градиента:

[email protected]:~/test_cache$ ./gradlew build 
:compileJava 
Download https://jcenter.bintray.com/com/google/code/gson/gson/2.4/gson-2.4.pom 
Download https://jcenter.bintray.com/org/sonatype/oss/oss-parent/9/oss-parent-9.pom 
Download https://jcenter.bintray.com/com/google/code/gson/gson/2.4/gson-2.4.jar 
:processResources UP-TO-DATE 
:classes 
:jar 
:assemble 
:compileTestJava UP-TO-DATE 
:processTestResources UP-TO-DATE 
:testClasses UP-TO-DATE 
:test UP-TO-DATE 
:check UP-TO-DATE 
:build 

BUILD SUCCESSFUL 

Любые идеи, почему Gradle пропускает локальный репозиторий в этом случае и использует его только при отсутствии доступа к jcenter?

+0

Попробуйте добавить -i в команду сборки, чтобы получить дополнительную информацию. Gradle расскажет вам, какие репозитории он пытается получить. – tomasulo

ответ

1

Я считаю, что в вашем кеше могут отсутствовать файлы дескриптора .pom и, возможно, некоторые другие .xml-дескрипторы. Попытайтесь получить файл .pom для своей зависимости и посмотрите, поможет ли это.

+0

Это было именно оно. Механизм, который я использовал для создания локального репозитория, заключался в том, чтобы оставить файлы .pom, и это заставит Gradle использовать этот репозиторий только в качестве резервной копии. –

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