我是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")
}
答案 0 :(得分:1)
在上面的构建调用中,至少check
和sourcesJar
已经可以省略了。 (build
取决于check
,而from(sourcesJar)
告诉Gradle dist
取决于sourcesJar
。)通过添加更多任务依赖项(例如build.dependsOn dist
) ,你可以将它减少到gradle clean build -Pversion=...
。 dist
不应该依赖于build
,而应该依赖于产生进入zip的工件的特定任务(例如groovydoc
和createPom
)。
将gradle clean build
缩减为gradle fullBuild
会更加困难,因为Gradle目前没有&#34;别名&#34;和添加build.dependsOn(clean)
的一流概念通常是不可取的。一种方法是通过操纵gradle.startParameter.taskNames
来实现自己的别名机制。