2015-08-19 38 views
10

我的Maven與M2_HOME定義爲:搖籃不使用Maven本地倉庫新的相關

  • /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一切工作正常。任何新的依賴關係都會去那裏。

我有一個基於與搖籃項目,其中在我的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的mavenLocal()應該使用與在Maven的settings.xml文件中定義的<localRepository>相同的路徑。

現在確認在Maven本地存儲庫中存在一些已經下載的依賴關係。

當我執行例如gradle這個身材,我也認識到,

  • 如果依賴已經從本地Maven庫中存在,它是從那裏使用。
  • 如果依賴不從本地Maven倉庫搖籃存在下載新的依賴關係:/Users/manuelj/.gradle/caches/modules-2/files-2.1

我想的是,新的依賴,直接去同一個本地Maven倉庫。

因此,需要什麼額外的配置呢?

+1

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

+0

感謝。對此缺乏支持感到悲傷。 –

回答

13

mavenLocal()解決這樣的:

搖籃眺望~/.m2/settings.xml對於其中的本地倉庫所在位置的信息。如果未找到任何信息,則假定爲~/.m2/repository

這是對Gradle論壇上給出的問題「mavenLocal() - how does Gradle resolve the directory of the local maven repository?」的回答。

引用的討論還包含針對您的特定問題的解決方案。爲了使使用非標準的本地倉庫,可以使用下面的配置,您build.gradle

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

感謝回覆,請記住,我希望通過Gradle獲得的新依賴項轉到Maven Local Repository。檢查我的問題中的評論。有一個鏈接到其他問題。可悲的是,目前還沒有解決方案。 –

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') 
} 

我我正在使用Gradle 3.5

0

我遇到了這個問題,因爲我正在處理一個遺留問題項目,我需要使用sudo gradle build命令來運行我的構建。構建涉及複製需要root權限的XSD文件。我選擇不採用以前答案的解決方案,因爲我不想更改構建文件;我不想不小心檢查我的build.gradle變化。我發現的是,Gradle正在檢查/var/root/.m2文件夾中的mavenLocal。我的解決方案是將/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

有趣的是,我會嘗試在其他PC上檢查它 –