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

bvhaajcl  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(104)

我有两个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

nc1teljy

nc1teljy1#

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

build{
    dependsOn ':first:build'
}

字符串
试试这个项目设置:

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


然后把它放在settings.gradle你的根:

include 'first'
include 'second'

j2cgzkjk

j2cgzkjk2#

你应该把木块移开

dependencies {
  compile project(':first')
}

字符串
到第二个项目的build.gradle。这将构建第一个项目,然后第二个项目和第二个项目可以使用第一个项目的类。

gdx19jrr

gdx19jrr3#

dependencies {
  implementation files( project(‘:first’).tasks.jar )
}

字符串

相关问题