当前位置: 首页 > 知识库问答 >
问题:

Gradle多项目构建与文件读取

柴岳
2023-03-14

嗨,我有两个项目,文件如下:

project1
  \- build.gradle

project2
  \- build.gradle
  \- build.properties

项目1:构建。格拉德尔

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

task test1 {
  println "Running task test 1"
}

test1.dependsOn test2

项目2:构建。格拉德尔

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

当我从Project 1执行test1任务时,我得到以下错误:

正在运行任务测试2

失败:生成失败,出现异常。

>

错误:评估脚本时出现问题。建筑属性(无此类文件或目录)

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

建筑失败

总时间:5.779秒

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

我也可以在构建中使用绝对路径。但这是唯一的解决方案吗?

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

共有1个答案

苏浩瀚
2023-03-14

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

test1.dependsOn ':project2:test2'

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

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

 类似资料:
  • 我正在改变我们的项目,以使用gradle作为构建工具,但正在与2个问题斗争;

  • 主要内容:多项目构建的结构,指定常规构建配置,项目指定配置和依赖关系,Gradle多项目构建的示例,子项目配置,参考可以轻松处理各种大小规模的项目。小项目由一个单一的构建文件和一个源代码树构成。 大项目可以将其拆分成更小的,相互依赖的模块,以便更容易理解。Gradle完美支持这种多项目构建的场景。 多项目构建的结构 这种构建有各种形状和大小,但它们都有一些共同的特点 - 在项目的根目录或主目录中都有一个文件。 根目录或主目录都有一个文件。 具有自己的构建文件的子目录(某些多项目构建可能会省略子项

  • 我们有一个带有设置的多项目。渐变和无构建。根项目中的gradle。 gradle的默认行为是查找顶部目录上的settings.gradle文件并读取之前定义的每个项目的build.gradle。 我的问题是:根据签出多项目的环境,当从根项目运行构建时,我希望以默认的“build2.gradle”而不是“build.gradle”运行。 最好的方法是什么?? 谢啦

  • 主要内容:Groovy插件,Groovy项目的默认项目布局本章介绍如何使用文件编译和执行Groovy项目。 Groovy插件 Gradle的Groovy插件扩展了Java插件,并为Groovy程序提供了任务。可以使用以下行来应用groovy插件。 完整的构建脚本文件如下。将以下代码复制到文件中。 可以使用以下命令来执行构建脚本。 Groovy项目的默认项目布局 Groovy插件假定Groovy项目有手动做过一定的设置。 包含Groovy源代码; 包含Gr

  • 主要内容:Java默认的项目布局,初始化任务执行,指定Java版本本章介绍如何使用Gradle构建文件来构建一个Java项目。 首先,我们必须向构建脚本中添加Java插件,因为它提供了编译Java源代码,运行单元测试,创建Javadoc和创建JAR文件的任务。 在文件中使用以下代码行。 怎么样,是不是很简单? Java默认的项目布局 每当添加一个插件到构建中,它会假设一个特定的Java项目设置(类似于Maven)。看看下面的目录结构。 目录包含Java源代码;

  • 主要内容:1- 介绍,2- 示例模型,3-创建项目数学库,4- 创建另一个项目:MathWebApp,5- 创建GradleMain项目,6- 构建项目,7- 运行MathWebApp1- 介绍 本教程文章基于: Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1) 如果您是初学者Gradle的。那么建议先看看初学者Gradle(Gradle Hello world)的文章: http://www.yiib