Files
spring-data-gemfire/build.gradle
Oliver Gierke 639293adfe SGF-305 - Finished migration to Asciidoctor.
Upgraded Asciidoctor plugin to 1.5 and re-enabled Docbook plugin for PDF generation. Removed obsolete repository declarations. Use Spring Data Build shared resources to use the CSS file from it. Configure Docbook reference plugin to use Asciidoctor generated sources. Override expandPlaceholders to avoid replacement of variables in source files. Tweaked docs ZIP setup to include Asciidoctor generated HTML and Docbook generated PDF version.
2014-09-02 16:54:39 +02:00

319 lines
9.4 KiB
Groovy

buildscript {
repositories {
maven { url 'http://repo.spring.io/plugins-release' }
}
dependencies {
classpath 'org.springframework.build.gradle:bundlor-plugin:0.1.2'
classpath 'io.spring.gradle:docbook-reference-plugin:0.3.0'
classpath('org.asciidoctor:asciidoctor-gradle-plugin:1.5.0')
classpath('org.asciidoctor:asciidoctorj:1.5.0')
classpath 'org.springframework.build.gradle:spring-io-plugin:0.0.3.RELEASE'
}
}
configurations {
sharedResources
}
description = 'Spring Data GemFire'
group = 'org.springframework.data'
repositories {
maven { url "http://repo.spring.io/libs-snapshot" }
maven { url "http://repo.spring.io/plugins-release"}
}
apply plugin: "java"
apply plugin: 'eclipse'
apply plugin: 'idea'
apply from: "$rootDir/maven.gradle"
apply plugin: 'docbook-reference'
apply plugin: 'bundlor'
apply plugin: 'org.asciidoctor.gradle.asciidoctor'
if (project.hasProperty('platformVersion')) {
apply plugin: 'spring-io'
repositories {
maven { url "https://repo.spring.io/libs-snapshot" }
}
dependencies {
springIoVersions "io.spring.platform:platform-versions:${platformVersion}@properties"
}
}
[compileJava, compileTestJava]*.options*.compilerArgs = ["-Xlint:-serial"]
tasks.withType(Test).all {
forkEvery = 1
systemProperties['gemfire.disableShutdownHook'] = 'true'
systemProperties['org.springframework.data.gemfire.test.GemfireTestRunner.nomock'] = System.getProperty('org.springframework.data.gemfire.test.GemfireTestRunner.nomock')
}
// Common dependencies
dependencies {
// Spring Framework
compile("org.springframework:spring-core:$springVersion") {
exclude group: "commons-logging", module: "commons-logging"
}
compile("org.springframework:spring-aop:$springVersion") {
exclude group: "commons-logging", module: "commons-logging"
}
compile("org.springframework:spring-context-support:$springVersion") {
exclude group: "commons-logging", module: "commons-logging"
}
compile("org.springframework:spring-tx:$springVersion") {
exclude group: "commons-logging", module: "commons-logging"
}
// Spring Data
compile("org.springframework.data:spring-data-commons:${springDataCommonsVersion}") {
exclude group: "commons-logging", module: "commons-logging"
}
// GemFire
compile("com.gemstone.gemfire:gemfire:$gemfireVersion")
runtime("antlr:antlr:$antlrVersion")
compile "org.aspectj:aspectjweaver:$aspectjVersion"
compile "com.fasterxml.jackson.core:jackson-core:$jacksonVersion"
compile "com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion"
compile "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion"
compile "org.slf4j:slf4j-api:$slf4jVersion"
compile "org.slf4j:jcl-over-slf4j:$slf4jVersion"
// Testing
testCompile("org.springframework:spring-test:$springVersion") {
exclude group: "commons-logging", module: "commons-logging"
}
testCompile "junit:junit:$junitVersion"
testCompile "org.hamcrest:hamcrest-core:$hamcrestVersion"
testCompile "org.hamcrest:hamcrest-library:$hamcrestVersion"
testCompile "org.mockito:mockito-core:$mockitoVersion"
testCompile "javax.annotation:jsr250-api:1.0", optional
testRuntime "log4j:log4j:$log4jVersion"
testCompile "org.apache.derby:derbyLocale_zh_TW:10.9.1.0"
testRuntime "org.slf4j:slf4j-log4j12:$slf4jVersion"
sharedResources "org.springframework.data.build:spring-data-build-resources:$springDataBuildVersion@zip"
}
sourceCompatibility = 1.6
targetCompatibility = 1.6
javadoc {
ext.srcDir = file("${projectDir}/docs/src/api")
destinationDir = file("${buildDir}/api")
ext.tmpDir = file("${buildDir}/api-work")
configure(options) {
stylesheetFile = file("${srcDir}/spring-javadoc.css")
overview = "${srcDir}/overview.html"
docFilesSubDirs = true
outputLevel = org.gradle.external.javadoc.JavadocOutputLevel.QUIET
breakIterator = true
showFromProtected()
groups = [
'Spring GemFire' : ['org.springframework.data.gemfire*'],
]
links = [
"http://static.springframework.org/spring/docs/3.1.x/javadoc-api",
"http://download.oracle.com/javase/6/docs/api",
"http://www.gemstone.com/docs/6.5.1/product/docs/japi/",
"http://asm.objectweb.org/asm223/javadoc/user",
"http://logging.apache.org/log4j/docs/api/",
"http://atinject.googlecode.com/svn/trunk/javadoc/"
]
exclude "org/springframework/data/gemfire/config/**"
}
title = "${rootProject.description} ${version} API"
}
jar {
manifest.attributes['Implementation-Title'] = 'spring-data-gemfire'
manifest.attributes['Implementation-Version'] = project.version
from("$rootDir/docs/src/info") {
include "license.txt"
include "notice.txt"
into "META-INF"
expand(copyright: new Date().format('yyyy'), version: project.version)
}
}
// Reference documentation
reference {
// Avoid copy with expansions
expandPlaceholders = '';
}
referencePdf {
dependsOn = [ 'asciidoctor' ]
sourceDir = asciidoctor.outputDir
}
asciidoctor {
dependsOn = [ 'extractSharedResources' ]
backends = [ 'html5', 'docbook' ]
options = [
doctype: 'book',
eruby: 'erubis',
attributes: [
linkcss: true,
copycss : "$buildDir/shared-resources/asciidoc/spring.css",
icons : 'font',
'source-highlighter': 'prettify',
sectanchors : true,
toclevels: '3',
sectids: false,
numbered: true,
version: project.version,
stylesheet: "spring.css",
]
]
}
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allJava
}
task javadocJar(type: Jar) {
classifier = 'javadoc'
from javadoc
}
task docsZip(type: Zip) {
group = 'Distribution'
classifier = 'docs'
description = "Builds -${classifier} archive containing api and reference for deployment"
dependsOn = [ 'javadoc', 'asciidoctor', 'referencePdf' ]
from('docs/src/info') {
include 'changelog.txt'
}
from (javadoc) {
into 'api'
}
from (asciidoctor.outputDir) {
include "index.html"
include "spring.css"
into 'reference/html'
}
from (referencePdf.outputDir) {
into 'reference'
}
}
task schemaZip(type: Zip) {
group = 'Distribution'
classifier = 'schema'
description = "Builds -${classifier} archive containing all XSDs for deployment"
def Properties schemas = new Properties();
sourceSets.main.resources.find {
it.path.endsWith('META-INF' + File.separator + 'spring.schemas')
}?.withInputStream { schemas.load(it) }
for (def key : schemas.keySet()) {
def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1')
def alias = key.replaceAll(/http.*schema.(.*).(spring-.*)/, '$2')
assert shortName != key
File xsdFile = sourceSets.main.resources.find {
it.path.replace('\\', '/').endsWith(schemas.get(key))
}
assert xsdFile != null
into (shortName) {
from xsdFile.path
rename { String fileName -> alias }
}
}
}
task distZip(type: Zip, dependsOn: [jar, docsZip, schemaZip, sourcesJar, javadocJar]) {
group = 'Distribution'
classifier = 'dist'
description = "Builds -${classifier} archive, containing all jars and docs, " +
"suitable for community download page."
ext.zipRootDir = "${project.name}-${project.version}"
into (zipRootDir) {
from('docs/src/info') {
include 'readme.txt'
include 'license.txt'
include 'notice.txt'
expand(copyright: new Date().format('yyyy'), version: project.version)
}
from('samples/') {
into 'samples'
exclude '**/build/**'
exclude '**/target/**'
exclude '**/.gradle/**'
exclude '**/vf*.*'
exclude '**/vf*.txt'
}
from(zipTree(docsZip.archivePath)) {
into "docs"
}
from(zipTree(schemaZip.archivePath)) {
into "schema"
}
into ("dist") {
from rootProject.collect { project -> project.libsDir }
}
}
}
artifacts {
archives sourcesJar
archives javadocJar
archives docsZip
archives schemaZip
archives distZip
}
task wrapper(type: Wrapper) {
description = "Generates gradlew[.bat] scripts"
gradleVersion = "1.9"
doLast() {
def gradleOpts = "-XX:MaxPermSize=1024m -Xms256m -Xmx1024m"
def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=1024m"
File wrapperFile = file("gradlew")
wrapperFile.text = wrapperFile.text.replace("DEFAULT_JVM_OPTS=",
"GRADLE_OPTS=\"$gradleOpts \$GRADLE_OPTS\"\nDEFAULT_JVM_OPTS=")
File wrapperBatFile = file("gradlew.bat")
wrapperBatFile.text = wrapperBatFile.text.replace("set DEFAULT_JVM_OPTS=",
"set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=")
}
}
task extractSharedResources(type: Copy) {
from { // use of closure defers evaluation until execution time
configurations.sharedResources.collect { zipTree(it) }
}
into "$buildDir/shared-resources"
}
assemble.dependsOn = ['jar', 'sourcesJar']
defaultTasks 'build'