Align build.gradle with buildSrc expectations
* remove docs/build.gradle in favor of buildSrc/docs.gradle * upgrade log4j 1.2.14->1.2.15
This commit is contained in:
116
build.gradle
116
build.gradle
@@ -14,6 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import org.springframework.build.Version
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Main gradle build file for Spring AMQP
|
||||
@@ -24,20 +25,30 @@
|
||||
// or from jars on 'buildscript' classpath (in our case, it's all buildSrc)
|
||||
// sources in buildSrc are compiled and placed on the classpath automatically
|
||||
//
|
||||
// @author cbeams
|
||||
// @author Chris Beams
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Configuration for the root project
|
||||
// -----------------------------------------------------------------------------
|
||||
// used for artifact names, building doc upload urls, etc.
|
||||
description = 'Spring AMQP'
|
||||
abbreviation = 'AMQP'
|
||||
|
||||
apply plugin: 'base'
|
||||
apply plugin: 'idea'
|
||||
|
||||
def buildSrcDir = "$rootDir/buildSrc"
|
||||
apply from: "$buildSrcDir/wrapper.gradle"
|
||||
apply from: "$buildSrcDir/maven-root-pom.gradle"
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Configuration for all projects including this one (the root project)
|
||||
//
|
||||
// @see settings.gradle for list of all subprojects
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
apply from: "$rootDir/gradle/version.gradle"
|
||||
apply plugin: 'idea'
|
||||
|
||||
|
||||
allprojects {
|
||||
// group will translate to groupId during pom generation and deployment
|
||||
group = 'org.springframework.amqp'
|
||||
@@ -47,7 +58,7 @@ allprojects {
|
||||
// milestone or release.
|
||||
// @see org.springframework.build.Version under buildSrc/ for more info
|
||||
// @see gradle.properties for the declaration of this property.
|
||||
version = createVersion(springAmqpVersion)
|
||||
version = new Version(springAmqpVersion)
|
||||
|
||||
// defoult set of maven repositories to be used when resolving dependencies
|
||||
repositories {
|
||||
@@ -95,16 +106,26 @@ coreprojects = javaprojects - sampleprojects
|
||||
// Configuration for all java subprojects
|
||||
// -----------------------------------------------------------------------------
|
||||
configure(javaprojects) {
|
||||
apply plugin: 'java' // tasks for conventional java lifecycle
|
||||
apply plugin: 'maven' // `gradle install` to push jars to local .m2 cache
|
||||
apply plugin: 'eclipse' // `gradle eclipse` to generate .classpath/.project
|
||||
apply plugin: 'idea' // `gradle idea` to generate .ipr/.iml
|
||||
apply plugin: 'java' // tasks for conventional java lifecycle
|
||||
apply plugin: 'maven' // `gradle install` to push jars to local .m2 cache
|
||||
apply plugin: 'eclipse' // `gradle eclipse` to generate .classpath/.project
|
||||
apply plugin: 'idea' // `gradle idea` to generate .ipr/.iml
|
||||
|
||||
// ensure JDK 1.6 compatibility
|
||||
sourceCompatibility=1.6
|
||||
targetCompatibility=1.6
|
||||
|
||||
// set up dedicated directories for jars and source jars.
|
||||
// this makes it easier when putting together the distribution
|
||||
libsBinDir = new File(libsDir, 'bin')
|
||||
libsSrcDir = new File(libsDir, 'src')
|
||||
|
||||
springVersion = '3.0.5.RELEASE'
|
||||
rabbitVersion = '2.1.0'
|
||||
erlangVersion = '1.5.3'
|
||||
slf4jVersion = '1.5.10'
|
||||
junitVersion = '4.8.2'
|
||||
log4jVersion = '1.2.15'
|
||||
rabbitVersion = '2.1.0'
|
||||
slf4jVersion = '1.5.10'
|
||||
springVersion = '3.0.5.RELEASE'
|
||||
|
||||
// dependencies that are common across all java projects
|
||||
dependencies {
|
||||
@@ -125,18 +146,22 @@ configure(javaprojects) {
|
||||
// @see individual project(*) configurations below
|
||||
// -----------------------------------------------------------------------------
|
||||
configure(coreprojects) {
|
||||
// all core projects should be OSGi-compliant
|
||||
apply plugin: 'bundlor'
|
||||
|
||||
// certain projects will need erlang licensing in addition to Apache.
|
||||
// false by default, but certain projects will assign true
|
||||
erlangLicense = false
|
||||
|
||||
// all core projects should be OSGi-compliant bundles
|
||||
// add the bundlor task to ensure proper manifests
|
||||
apply from: "$rootDir/gradle/bundlor.gradle"
|
||||
apply from: "$rootDir/gradle/maven-deployment.gradle"
|
||||
// add tasks for creating source jars and generating poms etc
|
||||
apply from: "$buildSrcDir/maven-deployment.gradle"
|
||||
|
||||
// add tasks for finding and publishing .xsd files
|
||||
apply from: "$buildSrcDir/schema-publication.gradle"
|
||||
|
||||
// dependencies common to all core projects
|
||||
dependencies {
|
||||
compile ('log4j:log4j:1.2.15') {
|
||||
compile ("log4j:log4j:$log4jVersion") {
|
||||
exclude group: 'javax.mail', name: 'mail'
|
||||
exclude group: 'javax.jms', name: 'jms'
|
||||
exclude group: 'com.sun.jdmk', name: 'jmxtools'
|
||||
@@ -147,6 +172,7 @@ configure(coreprojects) {
|
||||
runtime "org.slf4j:slf4j-log4j12:$slf4jVersion"
|
||||
}
|
||||
|
||||
// integration tests require a rabbitmq server up; ignore for now
|
||||
test.exclude '**/*IntegrationTests.class'
|
||||
}
|
||||
|
||||
@@ -170,11 +196,16 @@ configure(sampleprojects) {
|
||||
compile "com.rabbitmq:amqp-client:$rabbitVersion"
|
||||
compile "org.springframework:spring-aop:$springVersion"
|
||||
compile "org.springframework:spring-oxm:$springVersion"
|
||||
runtime 'log4j:log4j:1.2.14'
|
||||
runtime 'cglib:cglib-nodep:2.2'
|
||||
runtime 'aspectj:aspectjrt:1.5.4'
|
||||
runtime 'aspectj:aspectjweaver:1.5.4'
|
||||
runtime "org.springframework:spring-context-support:$springVersion"
|
||||
runtime('cglib:cglib-nodep:2.2') { optional = true }
|
||||
runtime ("log4j:log4j:$log4jVersion") {
|
||||
exclude group: 'javax.mail', name: 'mail'
|
||||
exclude group: 'javax.jms', name: 'jms'
|
||||
exclude group: 'com.sun.jdmk', name: 'jmxtools'
|
||||
exclude group: 'com.sun.jmx', name: 'jmxri'
|
||||
}
|
||||
testCompile "org.springframework:spring-test:$springVersion"
|
||||
}
|
||||
}
|
||||
@@ -186,6 +217,7 @@ configure(sampleprojects) {
|
||||
// @see configure(javaprojects) above for general config
|
||||
// -----------------------------------------------------------------------------
|
||||
project('spring-amqp') {
|
||||
description = 'Spring AMQP Core'
|
||||
dependencies {
|
||||
compile "org.springframework:spring-core:$springVersion"
|
||||
// TODO exclude commons-logging/commons-logging?
|
||||
@@ -195,8 +227,8 @@ project('spring-amqp') {
|
||||
}
|
||||
|
||||
project('spring-erlang') {
|
||||
description = 'Spring Erlang Support'
|
||||
erlangLicense = true
|
||||
|
||||
dependencies {
|
||||
compile "org.springframework:spring-beans:$springVersion"
|
||||
compile "org.erlang.otp:jinterface:$erlangVersion"
|
||||
@@ -204,6 +236,7 @@ project('spring-erlang') {
|
||||
}
|
||||
|
||||
project('spring-rabbit') {
|
||||
description = 'Spring RabbitMQ Support'
|
||||
dependencies {
|
||||
compile project(':spring-amqp')
|
||||
compile "com.rabbitmq:amqp-client:$rabbitVersion"
|
||||
@@ -220,8 +253,8 @@ project('spring-rabbit') {
|
||||
}
|
||||
|
||||
project('spring-rabbit-admin') {
|
||||
description = 'Spring RabbitMQ Administrative Support'
|
||||
erlangLicense = true
|
||||
|
||||
dependencies {
|
||||
compile project(':spring-amqp')
|
||||
compile project(':spring-erlang')
|
||||
@@ -241,19 +274,26 @@ project('spring-rabbit-admin') {
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Configuration for each individual sample subproject
|
||||
// Configuration for sample projects
|
||||
//
|
||||
// @see configure(sampleprojects) above for general config
|
||||
// -----------------------------------------------------------------------------
|
||||
project(':spring-amqp-samples') {
|
||||
description = 'Spring AMQP Samples'
|
||||
}
|
||||
|
||||
project(':spring-amqp-samples:helloworld') {
|
||||
description = 'Spring AMQP Hello World Sample'
|
||||
|
||||
generatePom {
|
||||
artifactId = 'helloworld'
|
||||
artifactName = 'Spring AMQP Hello World'
|
||||
artifactName = project.description
|
||||
artifactDescription = 'Shows the usage of Spring AMQP integration classes'
|
||||
}
|
||||
}
|
||||
|
||||
project(':spring-amqp-samples:stocks') {
|
||||
description = 'Spring AMQP Stocks Sample'
|
||||
dependencies {
|
||||
compile "org.springframework:spring-beans:$springVersion"
|
||||
compile "org.springframework:spring-core:$springVersion"
|
||||
@@ -266,7 +306,7 @@ project(':spring-amqp-samples:stocks') {
|
||||
|
||||
generatePom {
|
||||
artifactId = 'stocks'
|
||||
artifactName = 'Spring Rabbit Stocks'
|
||||
artifactName = project.description
|
||||
artifactDescription = 'Shows the usage of Spring Rabbit integration classes'
|
||||
}
|
||||
|
||||
@@ -290,22 +330,12 @@ project(':spring-amqp-samples:stocks') {
|
||||
}
|
||||
|
||||
|
||||
// add basic tasks like 'clean' and 'assemble' to the root project. e.g.: allows
|
||||
// running `gradle clean` from the root project and deleting the build directory
|
||||
apply plugin: 'base'
|
||||
|
||||
// add tasks like 'distArchive'
|
||||
apply from: "$rootDir/gradle/dist.gradle"
|
||||
|
||||
// add tasks like 'snapshotDependencyCheck'
|
||||
apply from: "${rootDir}/gradle/checks.gradle"
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Import tasks related to releasing and managing the project
|
||||
// depending on the role played by the current user.
|
||||
//
|
||||
// @see gradle.properties for more information on roles
|
||||
// Configuration for the docs subproject
|
||||
// -----------------------------------------------------------------------------
|
||||
// add management tasks like `wrapper` for generating the gradlew* scripts
|
||||
apply from: "$rootDir/gradle/wrapper.gradle"
|
||||
project('docs') {
|
||||
apply from: "$buildSrcDir/docs.gradle"
|
||||
}
|
||||
|
||||
apply from: "$buildSrcDir/dist.gradle"
|
||||
apply from: "$buildSrcDir/checks.gradle"
|
||||
|
||||
@@ -1,230 +0,0 @@
|
||||
/*
|
||||
* Copyright 2002-2010 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
apply plugin: 'base'
|
||||
apply from: "$rootDir/gradle/docbook.gradle"
|
||||
|
||||
|
||||
task build(dependsOn: assemble) {
|
||||
group = 'Build'
|
||||
description = 'Builds reference and API documentation and archives'
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Build aggregated JavaDoc HTML for all core project classes. Result is
|
||||
* suitable for packaging into a distribution zip or viewing directly with
|
||||
* a browser.
|
||||
*
|
||||
* @author cbeams
|
||||
* @author ltaylor
|
||||
* @see http://gradle.org/0.9-preview-3/docs/javadoc/org/gradle/api/tasks/javadoc/Javadoc.html
|
||||
*/
|
||||
task api(type: Javadoc) {
|
||||
group = 'Documentation'
|
||||
description = "Builds aggregated JavaDoc HTML for all core project classes."
|
||||
|
||||
// this task is a bit ugly to configure. it was a user contribution, and
|
||||
// Hans tells me it's on the roadmap to redesign it.
|
||||
srcDir = file("${projectDir}/src/api")
|
||||
destinationDir = file("${buildDir}/api")
|
||||
tmpDir = file("${buildDir}/api-work")
|
||||
optionsFile = file("${tmpDir}/apidocs/javadoc.options")
|
||||
options.stylesheetFile = file("${srcDir}/spring-javadoc.css")
|
||||
options.links = ['http://static.springframework.org/spring/docs/3.0.3.RELEASE/javadoc-api']
|
||||
options.overview = "${srcDir}/overview.html"
|
||||
options.docFilesSubDirs = true
|
||||
title = "Spring AMQP ${version} API"
|
||||
|
||||
// collect all the sources that will be included in the javadoc output
|
||||
source coreprojects.collect {project ->
|
||||
project.sourceSets.main.allJava
|
||||
}
|
||||
|
||||
// collect all main classpaths to be able to resolve @see refs, etc.
|
||||
// this collection also determines the set of projects that this
|
||||
// task dependsOn, thus the runtimeClasspath is used to ensure all
|
||||
// projects are included, not just *dependencies* of all classes.
|
||||
// this is awkward and took me a while to figure out.
|
||||
classpath = files(coreprojects.collect {project ->
|
||||
project.sourceSets.main.runtimeClasspath
|
||||
})
|
||||
|
||||
// copy the images from the doc-files dir over to the target
|
||||
doLast { task ->
|
||||
copy {
|
||||
from file("${task.srcDir}/doc-files")
|
||||
into file("${task.destinationDir}/doc-files")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Expand ${...} variables within docbook sources. This is a workaround
|
||||
* accomodating the fact that the current docbook plugin has no way of
|
||||
* parameterizing and replacing normal XML entities.
|
||||
*
|
||||
* Note that this task represents an implementation detail and it is
|
||||
* unfortunate that it pollutes the listing of available tasks, e.g.
|
||||
* during `gradle -t`. It's a good example of the need for 'task visibility' -
|
||||
* a feature not yet implemented, but on the Gradle roadmap.
|
||||
*
|
||||
* @author cbeams
|
||||
* @see http://jira.codehaus.org/browse/GRADLE-1026
|
||||
*/
|
||||
task preprocessDocbookSources {
|
||||
description = 'Expands ${...} variables within docbook sources.'
|
||||
|
||||
doLast {
|
||||
docbookSrcDir = file('src/reference/docbook')
|
||||
docbookBuildDir = file('build/reference-work')
|
||||
|
||||
// copy everything but index.xml
|
||||
copy {
|
||||
into(docbookBuildDir)
|
||||
from(docbookSrcDir) { exclude '**/index.xml' }
|
||||
}
|
||||
// copy index.xml and expand ${...} variables along the way
|
||||
// e.g.: ${version} needs to be replaced in the header
|
||||
copy {
|
||||
into(docbookBuildDir)
|
||||
from(docbookSrcDir) { include '**/index.xml' }
|
||||
expand(version: "$version")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Configure the three docbook* tasks that are added to the project by the
|
||||
// 'docbook' plugin.
|
||||
// -----------------------------------------------------------------------------
|
||||
task reference(dependsOn: [docbookHtml, docbookHtmlSingle, docbookPdf]) {
|
||||
group = 'Documentation'
|
||||
description = 'Generates all HTML and PDF reference documentation.'
|
||||
}
|
||||
|
||||
[docbookHtml, docbookPdf, docbookHtmlSingle]*.sourceFileName = 'index.xml';
|
||||
[docbookHtml, docbookHtmlSingle, docbookPdf]*.dependsOn preprocessDocbookSources
|
||||
|
||||
docbookHtml.stylesheet = file('src/reference/xsl/html-custom.xsl')
|
||||
docbookHtmlSingle.stylesheet = file('src/reference/xsl/html-single-custom.xsl')
|
||||
docbookPdf.stylesheet = file('src/reference/xsl/pdf-custom.xsl')
|
||||
def imagesDir = file('src/reference/docbook/images');
|
||||
docbookPdf.admonGraphicsPath = "${imagesDir}/"
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @see http://www.gradle.org/0.9-preview-3/docs/userguide/userguide_single.html#sec:copying_files
|
||||
* @see http://www.gradle.org/0.9-preview-3/docs/javadoc/org/gradle/api/file/CopySpec.html
|
||||
*/
|
||||
docsSpec = copySpec {
|
||||
into('') {
|
||||
from('src/txt')
|
||||
}
|
||||
|
||||
into('api') {
|
||||
from(api.destinationDir)
|
||||
}
|
||||
|
||||
into('reference') {
|
||||
from("${buildDir}/reference")
|
||||
}
|
||||
|
||||
// copy images and css into respective html dirs
|
||||
['html', 'htmlsingle'].each { dir ->
|
||||
into("reference/${dir}/images") {
|
||||
from "src/docbook/images"
|
||||
}
|
||||
into("reference/${dir}/css") {
|
||||
from "src/resources/css"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task archive(type: Zip, dependsOn: [api, reference]) {
|
||||
group = "Documentation"
|
||||
description = "Create a zip archive of reference and API documentation."
|
||||
|
||||
baseName = rootProject.name + '-docs'
|
||||
|
||||
// drop it right in the root of the build dir for simplicity
|
||||
destinationDir = buildDir
|
||||
|
||||
// use the copy spec above to specify the contents of the zip
|
||||
with docsSpec
|
||||
}
|
||||
|
||||
configurations { archives }
|
||||
artifacts { archives archive }
|
||||
|
||||
configurations { scpAntTask }
|
||||
dependencies {
|
||||
scpAntTask("org.apache.ant:ant-jsch:1.8.1")
|
||||
}
|
||||
|
||||
checkForProps(taskPath: project.path + ':uploadArchives', requiredProps: ['sshHost', 'sshUsername', 'remoteSiteDir'])
|
||||
|
||||
uploadArchives {
|
||||
def sshHost = project.properties.sshHost
|
||||
def sshUsername = project.properties.sshUsername
|
||||
def remoteSiteDir = project.properties.remoteSiteDir
|
||||
def docUrl = "http://${sshHost}/${rootProject.name}/docs/${version.wildcardValue}/"
|
||||
def remoteDocsDir = "${remoteSiteDir}/docs/${version.wildcardValue}"
|
||||
def fqRemoteDir = "${sshUsername}@${sshHost}:${remoteDocsDir}"
|
||||
|
||||
group = 'Buildmaster'
|
||||
description = "Uploads and unpacks documentation archive" + (sshHost ? " to ${docUrl}" : ": Host is not specified")
|
||||
|
||||
uploadDescriptor = false
|
||||
|
||||
repositories {
|
||||
add(new org.apache.ivy.plugins.resolver.SshResolver()) {
|
||||
name = 'sshHost: ' + sshHost // used for debugging
|
||||
host = sshHost
|
||||
user = sshUsername
|
||||
if (project.hasProperty('remoteSiteDir')) {
|
||||
keyFile = sshPrivateKey as File
|
||||
}
|
||||
addArtifactPattern "${remoteDocsDir}/${archive.archiveName}"
|
||||
}
|
||||
}
|
||||
|
||||
configurations { scpAntTask }
|
||||
dependencies { scpAntTask 'org.apache.ant:ant-jsch:1.8.1' }
|
||||
|
||||
doFirst {
|
||||
println "Uploading: ${archive.archivePath} to ${fqRemoteDir}"
|
||||
}
|
||||
|
||||
doLast {
|
||||
project.ant {
|
||||
taskdef(name: 'sshexec',
|
||||
classname: 'org.apache.tools.ant.taskdefs.optional.ssh.SSHExec',
|
||||
classpath: configurations.scpAntTask.asPath)
|
||||
|
||||
// copy the archive, unpack it, then delete it
|
||||
def unpackCommand = "cd ${remoteDocsDir} && unzip ${archive.archiveName}"
|
||||
def deleteCommand = "rm ${remoteDocsDir}/${archive.archiveName}"
|
||||
|
||||
println "sshexec ${unpackCommand}"
|
||||
sshexec(host: sshHost, username: sshUsername, keyfile: sshPrivateKey, command: unpackCommand)
|
||||
println "sshexec ${deleteCommand}"
|
||||
sshexec(host: sshHost, username: sshUsername, keyfile: sshPrivateKey, command: deleteCommand)
|
||||
println "UPLOAD SUCCESSFUL - validate by visiting ${docUrl}"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
<groupId>org.springframework.amqp.samples</groupId>
|
||||
<artifactId>helloworld</artifactId>
|
||||
<version>1.0.0.BUILD-SNAPSHOT</version>
|
||||
<name>Spring AMQP Hello World</name>
|
||||
<name>Spring AMQP Hello World Sample</name>
|
||||
<description>Shows the usage of Spring AMQP integration classes</description>
|
||||
<build>
|
||||
<plugins>
|
||||
@@ -65,7 +65,7 @@
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.14</version>
|
||||
<version>1.2.15</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<groupId>org.springframework.amqp.samples</groupId>
|
||||
<artifactId>stocks</artifactId>
|
||||
<version>1.0.0.BUILD-SNAPSHOT</version>
|
||||
<name>Spring Rabbit Stocks</name>
|
||||
<name>Spring AMQP Stocks Sample</name>
|
||||
<description>Shows the usage of Spring Rabbit integration classes</description>
|
||||
<build>
|
||||
<plugins>
|
||||
@@ -83,7 +83,7 @@
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.14</version>
|
||||
<version>1.2.15</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
Reference in New Issue
Block a user