2015-08-19 4 views
10

У меня есть Maven с M2_HOME определяется:Gradle не использует Maven Local Repository для новой зависимости

  • /Users/manuelj/apache/maven/3.2.5

У меня есть settings.xml файл, расположенный на:

  • /Users/manuelj/apache/maven/3.2.5/conf/settings.xml

где я заявил следующее:

<localRepository>/Users/manuelj/apache/maven/repository</localRepository>

Пока здесь с Maven все работает отлично. Любая новая зависимость идет туда.

У меня есть проект, основанный с Gradle, среди многих вещей в моем build.gradle, существует следующее:

apply plugin: 'java' 
apply plugin: 'maven' 
apply plugin: 'eclipse' 
apply plugin: 'application' 

version = '1.0.0' 
sourceCompatibility = '1.8' 

repositories { 
    mavenLocal() 
    mavenCentral() 
} 
… more 

Пока здесь, все тоже хорошо работает. Компиляция кода, выполняется хорошо.

Мое замешательство заключается в следующем.

По моему мнению, Gradle's mavenLocal() должен использовать тот же путь, что и <localRepository>, определенный в файле settings.xml Maven.

Теперь, подтверждая, что в локальном репозитории Maven существуют некоторые уже загруженные зависимости.

Когда я исполняю, например Gradle сборки, я понимаю, что

  • Если зависимость уже существует от Maven Local Repository, она используется там.
  • Если зависимость не существует от Maven Local Repository Gradle скачать новую зависимость к: /Users/manuelj/.gradle/caches/modules-2/files-2.1

Я хочу, чтобы новая зависимость перейти непосредственно к тому же Maven Local Repository.

Следовательно, какая дополнительная конфигурация ему нужна?

+1

http://stackoverflow.com/questions/27752463/gradle-downloading-dependency-into-cache-instead-of-maven-repository –

+0

Спасибо. Грустно об отсутствии поддержки для этого. –

ответ

13

mavenLocal() решается так:

Gradle смотрит в ~/.m2/settings.xml информации, где находится локальный репозиторий Maven. Если информация не найдена, она принимает ~/.m2/repository.

Это ответ на вопрос «mavenLocal() - how does Gradle resolve the directory of the local maven repository?», указанный на форумах Gradle.

Обсуждение также содержит решение вашей конкретной проблемы.Для того, чтобы использовать нестандартную хранилище локального Maven, вы можете использовать следующую конфигурацию в вашем build.gradle:

repositories { 
    maven { 
     url '/Users/manuelj/apache/maven/repository' 
    } 
} 
+0

Спасибо, ответьте, помните, что я хочу, чтобы новые зависимости, полученные через Gradle, перешли в локальный репозиторий Maven. Проверьте комментарий в моем вопросе. Существует ссылка на другой вопрос. К сожалению, решения пока нет. –

0

Использование

mavenLocal() 

, например:

buildscript { 
    ext { 
     springBootVersion = '2.0.0.M1' 
    } 
    repositories { 
     mavenCentral() 
     mavenLocal() 
     maven { url "https://repo.spring.io/snapshot" } 
     maven { url "https://repo.spring.io/milestone" } 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
} 

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'org.springframework.boot' 
apply plugin: 'io.spring.dependency-management' 

version = '0.0.1-SNAPSHOT' 
sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
    mavenLocal() 
    maven { url "https://repo.spring.io/snapshot" } 
    maven { url "https://repo.spring.io/milestone" } 
} 


dependencies { 
    compile('org.springframework.boot:spring-boot-starter-data-jpa') 
    compile('org.springframework.boot:spring-boot-starter-web') 
    compile('com.oracle:ojdbc6:11.2.0.4') 
    testCompile('org.springframework.boot:spring-boot-starter-test') 
} 

I am using Gradle 3.5

0

Я столкнулся с этим вопросом, потому что я работаю над наследием проект, где мне нужно запустить мою сборку с помощью команды sudo gradle build. В сборке используется копирование файлов XSD, для которых требуются права root. Я решил не использовать решения предыдущих ответов, потому что я не хотел менять файл сборки; Я не хотел случайно проверять свои изменения build.gradle. То, что я нашел, было то, что Gradle проверял mavenLocal в папке /var/root/.m2. Моим решением было скопировать /Users/me/.m2/settings.xml в /var/root/.m2 и добавить строку для localRepository, чтобы указать на мою папку /Users/me/.m2. Образец линии и где добавить это:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
         http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
    <localRepository>/Users/me/.m2/repository</localRepository> 
    <profiles> 
+0

Интересно, я постараюсь проверить его на другом ПК –

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