gradle-执行命令问题

gradle-执行命令问题,gradle,build.gradle,Gradle,Build.gradle,我有一个像这样的项目 root build.gradle settings.gradle project1 build.gradle project2 build.gradle project3 build.gradle project4 build.gradle include ':project1', ':project2', ':project3', ':proj

我有一个像这样的项目

root
    build.gradle
    settings.gradle
    project1
         build.gradle

    project2
         build.gradle

    project3
         build.gradle

    project4
         build.gradle
include ':project1', ':project2', ':project3', ':project4'
settings.gradle看起来像这样

root
    build.gradle
    settings.gradle
    project1
         build.gradle

    project2
         build.gradle

    project3
         build.gradle

    project4
         build.gradle
include ':project1', ':project2', ':project3', ':project4'
build.gradle(从根目录)

因此,基本上,我希望在project2、3、4之前先构建“project1”,因为它需要下载我们的内部依赖项(jar和一些模式文件),以便project2、3和4能够从模式文件(从project1)中提取工件

但当我运行它时,我看到project2和Project3的标准输出在project1运行之前先打印出来

尤其是project2包含许多运行此类参数的任务(类型:JavaExec)

  main = 'org.apache.xmlbeans.impl.tool.SchemaCompiler'
  classpath "${BUILDROOT}/project1/${COMMON_DENEPDENCY_FILE}"
  args "-src", "${projectDir}/src/main/java", "-d", "build/generated", "-srconly", "${projectDir}/xml/schema/example1.xsd", "${projectDir}/xml/schema/example1.xsdconfig"
其中一项任务如下所示。在project2中,我有几个类似的任务。因此,在project2和project3运行之前,必须完全构建project1

从project2生成build.gradle

task xmlbeansExample2(dependsOn: xmlbeansExample1, type: JavaExec) {
  println "Example2 is running"
  main = 'org.apache.xmlbeans.impl.tool.SchemaCompiler'
  classpath "${BUILDROOT}/common/${COMMON_DENEPDENCY_FILE}"
  args "-src", "${projectDir}/src/main/java", "-d", "build/generated", "-srconly", "${projectDir}/xml/schema/example2.xsd", "${projectDir}/xml/schema/example2.xsdconfig"
  println "Example2 is done"
}
task handleSchema(dependsOn: ['xmlbeansExample1', 'xmlbeansExample2'])

build.dependsOn handleSchema, jar
当我从根目录或project2运行'gradle build'时,我首先看到project2的打印输出

我的布局有问题吗


我的团队正在从Ant迁移到Gradle,但Gradle似乎与Ant执行略有不同。也许我对gradle有点误解。

好吧,对于根项目来说,没有必要将子模块指定为依赖项

如果您的模块依赖于另一个模块,则应明确定义此依赖关系

// project2/build.gradle
dependencies {
    compile project(':project1')
}

嗯,对于根项目,没有必要将子模块指定为依赖项

如果您的模块依赖于另一个模块,则应明确定义此依赖关系

// project2/build.gradle
dependencies {
    compile project(':project1')
}