2015-11-20 81 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目录或使用相对路径或绝对路径,因为应用程序只是使用一些额外的行为扩展当前的构建脚本,但不是如此,因为它是单独的项目。