是否可以扩展在二进制插件中配置的gradle构建脚本?

时间:2014-09-29 15:07:11

标签: plugins build gradle build-script

我在下面创建了一个Gradle插件:

class CommandServiceProjectPlugin implements Plugin<Project> {
public void apply(Project project) {
    project.buildscript{
        repositories {
            maven: {
                url: 'http://localhost:8081/artifactory/zailab-virtual-repo'
                credentials: {
                    username = "admin"
                    password = "password"
                }
            }
        }
        /*Spring Boot Gradle plugin */
        dependencies { 
            classpath: 'org.springframework.boot:spring-boot-gradle-plugin:1.1.6.RELEASE' 
        }
    }
    project.apply plugin: 'spring-boot'
    project.apply plugin: 'java'
    project.apply plugin: 'eclipse'
    project.repositories {
        maven: {
            url: 'http://localhost:8081/artifactory/zailab-virtual-repo'
        }
    }
    project.dependencies  {
        /*Spring Boot dependencies */
        compile: 'org.springframework.boot:spring-boot-starter-test'
        compile: 'org.springframework.boot:spring-boot-starter-aop'
        compile: 'org.springframework.boot:spring-boot-starter-data-mongodb'
        compile: 'org.springframework.boot:spring-boot-starter-integration'
        compile: 'org.springframework.boot:spring-boot-starter-amqp'
        /*Axon dependencies */
        compile: 'org.axonframework:axon-core:2.3.1'
        compile: 'org.axonframework:axon-mongo:2.3.1'
    }
}
}

然后我在另一个项目中应用插件,如下所示,但似乎buildcript定义覆盖/冲突,因为无法找到'spring-boot'插件。我是在尝试不可能的,还是有另一种方法来实现我想做的事情?

buildscript {
repositories {
    maven {
        url 'http://localhost:8081/artifactory/zailab-virtual-repo'
        credentials {
            username = "admin"
            password = "password"
        }
    }
}
dependencies {
    classpath(group: 'com.zailab', name: 'zailab-command-service-build', version: '1.0.0- SNAPSHOT')
 }
}
apply plugin: 'com.zailab.command.service.project'

谢谢, 罗斯科

1 个答案:

答案 0 :(得分:1)

据我所知,无法以编程方式从插件添加构建脚本依赖项。 原因是构建脚本生命周期 - 调用插件&#39; apply方法在项目的类路径配置已经解决后发生。

您应该在项目的构建脚本中配置buildscript,或者使用插件打包类路径依赖项。