如何确保包含的子项目在Gradle中的主项目之前运行?

时间:2015-02-07 16:44:58

标签: java build gradle

我有两个具有以下目录结构的Gradle项目:

/baseDir
  /first
  /first/build.gradle
  /second 
  /second/build.gradle
  /second/settings.gradle

settings.gradle如下所示:

includeFlat "first"

当我gradle build时,第二个项目是在第一个(主要)项目之后编译的。我尝试了第一个项目的build.gradle:

dependencies {
  compile project(':first')
}

在执行gradle build时,我收到错误,在第二个项目中找不到第一个项目中声明的依赖项。

我需要的是以下内容。当我在第二个项目上gradle build时,我希望首先构建第一个项目,并在第二个项目中使用first.jar作为依赖项。

我该怎么做?

编辑:当我在第二个项目的settings.gradle中设置以下内容时:

includeFlat "first", "second"

然后在执行graddle clean时出现以下错误:

FAILURE: Build failed with an exception.

* What went wrong:
Could not select the default project for this build. Multiple projects in this build have project directory '/Users/mg/Documents/Grails/GGTS3.6.3-SR1/second': [:, :second]
> Multiple projects in this build have project directory '/Users/mg/Documents/Grails/GGTS3.6.3-SR1/second': [:, :second]

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

BUILD FAILED

编辑:我创建了一个示例项目表单演示:https://github.com/confile/Gradle-MultiProject-Test

2 个答案:

答案 0 :(得分:0)

您可以让构建任务依赖于另一个项目的构建任务:

build{
    dependsOn ':first:build'
}

尝试此项目设置:

root
  settings.gradle
  gradle.build
  first
    gradle.build
  second
    gradle.build

并将其放在root的settings.gradle中:

include 'first'
include 'second'

答案 1 :(得分:0)

你应该移动块

dependencies {
  compile project(':first')
}

到第二个项目的build.gradle。 这将构建第一个项目,在第二个项目和第二个项目之前可以使用第一个项目的类。