使用文件读取

时间:2015-11-20 05:54:51

标签: gradle build.gradle

您好我有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

project2:build.gradle

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

当我从project1执行test1任务时,我收到以下错误:

运行任务测试2

  

失败:构建因异常而失败。

     
      
  • 其中:   脚本'/home/project2/build.gradle'行:4

  •   
  • 出了什么问题:   评估脚本时出现问题。   build.properties(没有这样的文件或目录)

  •   
  • 尝试:   使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。

  •   
     

建立失败

     

总时间:5.779秒

当gradle使用相对路径时,它会尝试在project1目录中搜索实际存在于project2目录中的build.properties文件。 我也可以将该文件移动到project1目录中,但这是我不想做的。

我也可以在build.gradle中使用绝对路径,但这只是解决方案吗?

我想从project2:test2任务运行project1:test1任务,而没有在project2:build.gradle中进行太多修改,因为我在这个文件中引用了多个文件。

1 个答案:

答案 0 :(得分:0)

您可以尝试不像现在那样应用完整的构建脚本,但可以根据project2中的任务从project1创建任务,如下所示:

test1.dependsOn ':project2:test2'

但是为此,您需要让所有这个项目都是同一根项目的子项目,并在根项目中有一个settings.gradle文件,定义这个子项目。您可以在official documentation

中阅读相关内容

否则,您需要将属性文件移动到project1目录或使用相对路径或绝对路径,因为apply只是扩展了当前构建脚本的一些额外行为,但没有这样做,因为它是单独的项目。