2017-02-07 79 views
0

我有一個IntelliJ項目,其中包含一個來自Maven中央存儲庫的多個項目的gradle構建文件。一種這樣的依賴是Geb。如何將依賴關係源添加到IntelliJ

當我瀏覽我的課程時,有時會遇到一個看起來很有趣的Geb課程。我選擇「去聲明」並得到一個傷心「無法找到聲明去」

顯然這是因爲IntelliJ沒有加載Geb源文件。但是如何在不將Geb作爲我的項目源的情況下做到這一點呢?我不希望Geb從源代碼編譯到我的項目中,因爲我已經將它作爲依賴項包含在我的gradle構建文件中。

  1. 將它作爲模塊依賴項添加不起作用。這就像添加更多來源。
  2. 我想我可以搶回購,並建立罐子,然後包括那些。這真的有必要嗎?
  3. 將IDEA插件添加到gradle文件不起作用。

的gradle這個腳本的有關部分:

apply plugin: 'groovy' 
apply plugin: 'idea' 

dependencies { 
    // need to depend on geb-spock 
    testCompile "org.gebish:geb-spock:0.13.1" 
    testCompile "org.spockframework:spock-core:1.0-groovy-2.4" 
    testCompile "org.apache.commons:commons-lang3:3.4" 
    testCompile "io.github.bonigarcia:webdrivermanager:1.5.0" 
    testRuntime "org.seleniumhq.selenium:selenium-support:2.53.1" 
} 

idea { 
    module { 
     downloadJavadoc = true // defaults to false 
     downloadSources = true 
    } 
} 
+0

「將IDEA插件添加到gradle文件不起作用。」你能顯示你的gradle文件嗎? – sm4

+0

我添加了我的gradle文件的基本部分。 – Calicoder

+0

你的倉庫中是否有mavenLocal?我有你的配置與其餘的gradle腳本,使其構建和我的gradle緩存和intellij都看到來源。 – sm4

回答

0

這是一個完整的構建腳本下載所有來源的依賴關係:

apply plugin: 'java' 
apply plugin: 'idea' 

idea { 
    module { 
     downloadJavadoc = true // defaults to false 
     downloadSources = true 
    } 
} 

repositories { 
    mavenCentral() 
} 

dependencies { 
    // need to depend on geb-spock 
    testCompile "org.gebish:geb-spock:0.13.1" 
    testCompile "org.spockframework:spock-core:1.0-groovy-2.4" 
    testCompile "org.apache.commons:commons-lang3:3.4" 
    testCompile "io.github.bonigarcia:webdrivermanager:1.5.0" 
    testRuntime "org.seleniumhq.selenium:selenium-support:2.53.1" 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '3.3' 
} 

的依賴性顯示在列表中:

Dependency

,我能夠瀏覽源代碼,你可以看到的評論是有:

The source code


其中一個可能的解釋是,在你的資料庫列表是一個回購協議,如mavenLocal或者沒有源依賴項的緩存Artifactory。

存儲庫的排序很重要,所以如果mavenLocal是第一個,並且源不可用,那麼我相信它們不會被下載。一個可能的解決將是從mavenLocal除去依賴性,並重新下載它,改變依賴的順序,或者如果它是父腳本,添加存儲庫時,免除您的子項目:

configure(allprojects - project(':my-subproj')) { 
    repositories { 
    ... 
    } 
} 

我不認爲有可以通過任何方式阻止子項目的構建腳本。它必須在父母中完成。

+0

我懷疑一個父級構建文件將mavenLocal放入我的資源庫列表中。有沒有辦法阻止父母的所有項目{存儲庫{...}}應用於我的項目? – Calicoder

+0

@Calicoder在答案中增加了更多信息 – sm4

相關問題