2016-11-15 12 views
0

Я был «sneaker-netted» набором банкоматов, которые в конечном итоге я опубликую в репозиторий (Artifactory), но в то же время, чтобы оставаться на месте на моей машине.Использование Gradle для решения банок из файловой системы

Мне нужно использовать эти банки в проекте Gradle, который должен не только отображать их как dependencies, но также использует плагин Eclipse для разрешения зависимостей внутри моей Eclipse IDE.

Эти банки все имеют POM и имеют свои транзитивные зависимости (все они находятся в типичных репозиториях, таких как Maven Central и JCenter и т. Д.).

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

Опять же, желаемый результат будет:

  • Добавьте эти банки в зависимости от, скажем, ~/special-jars/*
  • Независимо от зависимостей определены в POM каждого «специальный Jar в» решить эти
  • Когда я пробег gradle eclipse, Gradle вытаскивает их из файловой системы

Это можно сделать? Если да, то как?

ответ

1

Похоже, вы хотите хранить свои баночки в локальном хранилище maven.

Местный Maven Repo живет здесь по умолчанию ~/.m2/repository

С локального репозитория Maven структура каталогов будет строгим, например, здесь будет gson на моем локальном

$ ls -d $PWD/* 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-javadoc.jar 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-javadoc.jar.sha1 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-sources.jar 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-sources.jar.sha1 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar.sha1 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.pom 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.pom.sha1 

С помощью этого можно использовать типичный Gradle зависимость от транзитивных зависимостей.

repositories { 
    mavenLocal() 
} 
dependencies { 
    compile "com.google.code.gson:gson:2.6.2" 
} 

Вы можете импортировать банки через flatdir однако вы потеряете транзитивную зависимость, объявленную в П.

+0

Я думаю, что вы пропустили важный бит информации в вашем списке каталога. Вы также должны увидеть 'gson-2.6.2.pom' в каталоге, который указывает транзитивные зависимости –

+0

@Lance Java, Хорошая точка. Я обновил ответ, чтобы показать полный контент каталога, включая' pom' и 'sha1' файлы – JBirdVegas

0

В дополнение к JBirdVegas' answer, вы также можете использовать нестандартное местоположение. Например, вы можете использовать проект вложенной

repositories { 
    maven { 
     url file("${rootProject.projectDir}/mavenRepo") 
    } 
} 

Или

repositories { 
    maven { 
     url file("c:/path/to/repo") 
    } 
} 

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

  • Нет связанных вопросов^_^