如何简化这个Gradle命令行?

时间:2014-09-21 18:53:56

标签: gradle build.gradle

我是Gradle的新手,并且到目前为止已经使用了相当复杂的构建(运行测试,使用CodeNarc,生成API文档,生成源JAR等)。 “完全构建”的命令行(即,执行CI服务器应该运行的所有主要任务),我需要在shell中输入以下Gradle命令:

gradle clean build check groovydoc sourcesJar createPom dist -Pversion=<version>

<version>是我想要构建的版本。

我想简化这个并添加一个别名,以便所有上述内容都可以通过简单的方式完成,例如:

gradle full-build

这可能吗?如果是这样,怎么样?


我的build.gradle

apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'codenarc'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.3.3'

    testCompile 'junit:junit:4.11'
}

groovydoc

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

artifacts {
    archives sourcesJar
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

task dist(type: Zip, dependsOn: build) {
    classifier = 'buildreport'

    from('build/test-results') {
        include '*.xml'
        into 'tests'
    }

    from('build/reports/codenarc') {
        into 'reports'
    }

    from('build/docs') {
        into 'api'
    }

    from(sourcesJar) {
        into 'source'
    }

    from('build/libs') {
        exclude '*-sources.jar'
        into 'bin'
    }
}

task createPom << {
    pom {
        project {
            groupId "me"
            artifactId "myapp"
            version version
        }
    }.writeTo("build/libs/myapp-${version}.pom")
}

1 个答案:

答案 0 :(得分:1)

在上面的构建调用中,至少checksourcesJar已经可以省略了。 (build取决于check,而from(sourcesJar)告诉Gradle dist取决于sourcesJar。)通过添加更多任务依赖项(例如build.dependsOn dist) ,你可以将它减少到gradle clean build -Pversion=...dist不应该依赖于build,而应该依赖于产生进入zip的工件的特定任务(例如groovydoccreatePom)。

gradle clean build缩减为gradle fullBuild会更加困难,因为Gradle目前没有&#34;别名&#34;和添加build.dependsOn(clean)的一流概念通常是不可取的。一种方法是通过操纵gradle.startParameter.taskNames来实现自己的别名机制。