Spring Gradle子模块求值依赖关系

Spring Gradle子模块求值依赖关系,spring,spring-boot,gradle,spring-cloud,Spring,Spring Boot,Gradle,Spring Cloud,我有一堆项目,它们的配置应该基于模板(只有名称更改、不同的依赖项)。为此,我定义了一个名为“服务器”的父项目,它在subprojects部分中保存该公共配置部分 以下是其中一个模块的配置: defineArtifact(name: 'orb-api-gateway', version: '1.0.0') dependencies { compile 'org.springframework.cloud:spring-cloud-starter-zuul' compile 'or

我有一堆项目,它们的配置应该基于模板(只有名称更改、不同的依赖项)。为此,我定义了一个名为“服务器”的父项目,它在subprojects部分中保存该公共配置部分

以下是其中一个模块的配置:

defineArtifact(name: 'orb-api-gateway', version: '1.0.0')

dependencies {
    compile 'org.springframework.cloud:spring-cloud-starter-zuul'
    compile 'org.springframework.cloud:spring-cloud-starter-eureka'
    compile 'org.springframework.cloud:spring-cloud-starter-config'
    testCompile group: 'com.jayway.restassured', name: 'rest-assured', version: '2.9.0'
}
问题在于:

  • 在任务定义中请求这些属性之前,子项目需要“向上”注入它们的属性,例如buildImage任务-我将使用
    $dockerBuildDir
    变量,该变量应根据子模块提供的参数在defineArtifact方法中定义
  • 父模块必须有权访问为子模块创建的任务。请参阅底部的startServer任务

  • 当然,在没有创建任务时,这不会起作用。若要解决这个问题,我必须在服务器项目的子项之后对其进行评估,但在子项请求之前,我将无法定义defineArtifact方法。如何解决这个问题?

    这实际上看起来是一个制作自己插件的完美借口。
    defineArtifact(name: 'orb-api-gateway', version: '1.0.0')
    
    dependencies {
        compile 'org.springframework.cloud:spring-cloud-starter-zuul'
        compile 'org.springframework.cloud:spring-cloud-starter-eureka'
        compile 'org.springframework.cloud:spring-cloud-starter-config'
        testCompile group: 'com.jayway.restassured', name: 'rest-assured', version: '2.9.0'
    }