2015-11-20 98 views
1

嗨,我有2個項目文件,如下圖所示:搖籃多的項目建設與文件讀取

project1 
    \- build.gradle 

project2 
    \- build.gradle 
    \- build.properties 

PROJECT1:的build.gradle

apply from: '/home/project2/build.gradle  
test/test2/build.gradle' 

task test1 { 
    println "Running task test 1" 
} 

test1.dependsOn test2 

項目2:的build.gradle

task test2 { 
    println "Running task test 2" 
    Properties props = new Properties() 
    props.load(new FileInputStream("build.properties")) 
} 

當我執行te從PROJECT1 ST1任務,我得到以下錯誤:

運行任務測試2

FAILURE: Build failed with an exception.

  • Where: Script '/home/project2/build.gradle' line: 4

  • What went wrong: A problem occurred evaluating script. build.properties (No such file or directory)

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 5.779 secs

由於gradle這個正在與相對路徑,它會嘗試搜索在PROJECT1目錄中的build.properties文件實際上是出現在project2目錄中。 我也可以將該文件移動到project1目錄中,但這是我不想做的事情。

我也可以在build.gradle中使用絕對路徑,但唯一的解決方案是?

我想運行project2:test2任務project1:test1任務沒有太多修改project2:build.gradle因爲我指的是在這個文件中的多個文件。

+0

您是否偶然使用這些build.properties來配置您的構建?如果是這樣,你可以考慮使用gradle.properties來代替 - https://docs.gradle.org/current/userguide/build_environment.html –

+0

謝謝Eric, 但是我們需要build.properties而不是gradle.properties文件(Requirement) 。 –

回答

0

您可以嘗試不適用全力打造劇本,因爲你現在做的,但根據從項目2任務從PROJECT1做任務,因爲:

test1.dependsOn ':project2:test2' 

但對於這一點,你需要有所有該項目是同一根項目的子項目,並且在根項目中有一個settings.gradle文件,用於定義此子項目。您可以在official documentation中閱讀。

否則,您需要將屬性文件移動到project1目錄或使用相對路徑或絕對路徑,因爲應用程序只是使用一些額外的行爲擴展當前的構建腳本,但不是如此,因爲它是單獨的項目。