- This commit changes a way how triggerless transitions are executed by going via new doOnComplete method in StateListener which returns Mono<Void>. This used to be a simple fire and forget subscribe via listener and now fully handled via reactive chain when state is complete. Rest of a changes are to tweak state actions to run parallel to be able to cancel those and then follow and track when triggerless transitions need to be executed. - AbstractState still have some work to do for disposing things around submachines which currently seem to break thins if handleStateDoOnComplete is disposed when submachine state is exited. We'll leave this to get fixed later. - Add tag handling for junit5 which can be set via gradle build properties statemachineIncludeTags and statemachineExcludeTags. - Add BlockHound to build which can be activated via gradle build property statemachineBlockHound. - Add org.awaitility:awaitility to various test deps. - Mostly relates to #734
764 lines
24 KiB
Groovy
764 lines
24 KiB
Groovy
buildscript {
|
|
ext {
|
|
log4jVersion = '1.2.17'
|
|
springBootVersion = '2.2.0.M3'
|
|
eclipsePersistenceVersion = '2.1.1'
|
|
kryoVersion = '4.0.2'
|
|
springCloudClusterVersion = '1.0.2.RELEASE'
|
|
springShellVersion = '1.1.0.RELEASE'
|
|
eclipseEmfXmiVersion = '2.11.1-v20150805-0538'
|
|
eclipseUml2CommonVersion = '2.0.0-v20140602-0749'
|
|
eclipseEmfCommonVersion = '2.11.0-v20150805-0538'
|
|
eclipseUml2TypesVersion = '2.0.0-v20140602-0749'
|
|
eclipseEmfEcoreVersion = '2.11.1-v20150805-0538'
|
|
eclipseUml2UmlVersion = '5.0.0-v20140602-0749'
|
|
curatorVersion = '2.11.1'
|
|
docResourcesVersion = '0.1.1.RELEASE'
|
|
awaitilityVersion = '3.1.6'
|
|
reactorBlockHoundVersion = '1.0.0.M3'
|
|
}
|
|
repositories {
|
|
maven { url 'https://repo.springsource.org/libs-release'}
|
|
maven { url 'https://repo.springsource.org/plugins-release' }
|
|
maven { url 'https://repo.springsource.org/plugins-snapshot' }
|
|
}
|
|
dependencies {
|
|
classpath('io.spring.gradle:propdeps-plugin:0.0.8')
|
|
classpath('org.asciidoctor:asciidoctor-gradle-plugin:1.5.6')
|
|
classpath 'org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.16'
|
|
classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
|
|
}
|
|
}
|
|
|
|
def recipeProjects() {
|
|
subprojects.findAll { project ->
|
|
project.name.contains('spring-statemachine-recipes') && project.name != 'spring-statemachine-recipes-common'
|
|
}
|
|
}
|
|
|
|
def sampleProjects() {
|
|
subprojects.findAll { project ->
|
|
project.name.contains('spring-statemachine-samples') && project.name != 'spring-statemachine-samples-common'
|
|
}
|
|
}
|
|
|
|
def getResolvedVersionOf(dependency) {
|
|
// used for resolving version to docs
|
|
return configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.findAll { it.moduleName == dependency }[0].moduleVersion
|
|
}
|
|
|
|
configure(allprojects) {
|
|
apply plugin: 'java'
|
|
apply plugin: 'eclipse'
|
|
apply plugin: 'io.spring.dependency-management'
|
|
apply plugin: 'idea'
|
|
apply plugin: 'propdeps'
|
|
|
|
if (System.env.TRAVIS == 'true') {
|
|
tasks.withType(GroovyCompile) {
|
|
groovyOptions.fork = false
|
|
}
|
|
tasks.withType(Test) {
|
|
maxParallelForks = 1
|
|
minHeapSize = '256m'
|
|
maxHeapSize = '384m'
|
|
}
|
|
}
|
|
|
|
compileJava {
|
|
sourceCompatibility = 1.8
|
|
targetCompatibility = 1.8
|
|
}
|
|
|
|
compileTestJava {
|
|
sourceCompatibility = 1.8
|
|
targetCompatibility = 1.8
|
|
}
|
|
|
|
group = 'org.springframework.statemachine'
|
|
|
|
[compileJava, compileTestJava]*.options*.compilerArgs = ['-Xlint:none']
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven { url 'https://repo.springsource.org/libs-snapshot' }
|
|
maven { url 'https://repo.springsource.org/libs-release' }
|
|
maven { url 'https://repo.springsource.org/libs-milestone' }
|
|
}
|
|
|
|
dependencyManagement {
|
|
imports {
|
|
mavenBom "org.springframework.boot:spring-boot-dependencies:$springBootVersion"
|
|
}
|
|
dependencies {
|
|
dependency "log4j:log4j:$log4jVersion"
|
|
dependency "org.eclipse.persistence:javax.persistence:$eclipsePersistenceVersion"
|
|
dependency "com.esotericsoftware:kryo-shaded:$kryoVersion"
|
|
dependency "org.springframework.shell:spring-shell:$springShellVersion"
|
|
dependency "org.eclipse.uml2:uml:$eclipseUml2UmlVersion"
|
|
dependency "org.eclipse.uml2:types:$eclipseUml2TypesVersion"
|
|
dependency "org.eclipse.uml2:common:$eclipseUml2CommonVersion"
|
|
dependency "org.eclipse.emf:org.eclipse.emf.ecore.xmi:$eclipseEmfXmiVersion"
|
|
dependency "org.eclipse.emf:org.eclipse.emf.ecore:$eclipseEmfEcoreVersion"
|
|
dependency "org.eclipse.emf:org.eclipse.emf.common:$eclipseEmfCommonVersion"
|
|
dependency "org.apache.curator:curator-recipes:$curatorVersion"
|
|
dependency "org.apache.curator:curator-test:$curatorVersion"
|
|
dependency "org.awaitility:awaitility:$awaitilityVersion"
|
|
dependency "io.projectreactor.tools:blockhound-junit-platform:$reactorBlockHoundVersion"
|
|
}
|
|
}
|
|
|
|
task integrationTest(type: Test) {
|
|
include '**/*IntegrationTests.*'
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform {
|
|
if (project.hasProperty('statemachineIncludeTags') && statemachineIncludeTags.size() > 0) {
|
|
includeTags = statemachineIncludeTags.split(',')
|
|
}
|
|
if (project.hasProperty('statemachineExcludeTags') && statemachineExcludeTags.size() > 0) {
|
|
excludeTags = statemachineExcludeTags.split(',')
|
|
}
|
|
}
|
|
exclude '**/*IntegrationTests.*'
|
|
}
|
|
}
|
|
|
|
configure(subprojects) { subproject ->
|
|
apply from: "${rootProject.projectDir}/publish-maven.gradle"
|
|
|
|
dependencies {
|
|
testCompile("org.junit.jupiter:junit-jupiter-api")
|
|
testRuntime("org.junit.jupiter:junit-jupiter-engine")
|
|
testRuntime("org.junit.vintage:junit-vintage-engine")
|
|
if (project.hasProperty('statemachineBlockHound') && statemachineBlockHound.toBoolean()) {
|
|
testRuntime("org.junit.platform:junit-platform-launcher")
|
|
testRuntime("io.projectreactor.tools:blockhound-junit-platform")
|
|
}
|
|
}
|
|
|
|
jar {
|
|
manifest.attributes['Implementation-Title'] = subproject.name
|
|
manifest.attributes['Implementation-Version'] = subproject.version
|
|
|
|
from("${rootProject.projectDir}/src/dist") {
|
|
include "license.txt"
|
|
include "notice.txt"
|
|
into "META-INF"
|
|
expand(copyright: new Date().format('yyyy'), version: project.version)
|
|
}
|
|
}
|
|
|
|
javadoc {
|
|
// /config/configuration/StateMachineConfiguration.html...
|
|
// java.lang.ClassCastException: com.sun.tools.javadoc.MethodDocImpl cannot be cast
|
|
// to com.sun.tools.javadoc.AnnotationTypeElementDocImpl
|
|
// @Bean(name = StateMachineSystemConstants.DEFAULT_ID_STATEMACHINEFACTORY)
|
|
// vs.
|
|
// @Bean
|
|
|
|
enabled = false
|
|
options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
|
|
options.author = true
|
|
options.header = project.name
|
|
verbose = true
|
|
}
|
|
|
|
task sourcesJar(type: Jar, dependsOn:classes) {
|
|
classifier = 'sources'
|
|
from sourceSets.main.allJava
|
|
}
|
|
|
|
task javadocJar(type: Jar) {
|
|
classifier = 'javadoc'
|
|
from javadoc
|
|
}
|
|
|
|
artifacts {
|
|
archives sourcesJar
|
|
archives javadocJar
|
|
}
|
|
|
|
eclipse {
|
|
classpath {
|
|
plusConfigurations += [ configurations.optional ]
|
|
}
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-core') {
|
|
description = 'Spring State Machine Core'
|
|
|
|
configurations {
|
|
testArtifacts
|
|
}
|
|
|
|
dependencies {
|
|
compile 'org.springframework:spring-tx'
|
|
compile 'org.springframework:spring-messaging'
|
|
compile 'io.projectreactor:reactor-core'
|
|
optional 'org.springframework.security:spring-security-core'
|
|
|
|
testCompile 'org.springframework:spring-test'
|
|
testCompile 'org.springframework:spring-web'
|
|
testCompile 'org.springframework:spring-webmvc'
|
|
testCompile 'io.projectreactor:reactor-test'
|
|
testCompile 'org.apache.tomcat.embed:tomcat-embed-core'
|
|
testCompile 'org.hamcrest:hamcrest-core'
|
|
testCompile 'org.hamcrest:hamcrest-library'
|
|
testCompile('org.mockito:mockito-core') { dep ->
|
|
exclude group: 'org.hamcrest'
|
|
}
|
|
testCompile 'junit:junit'
|
|
testCompile 'org.assertj:assertj-core'
|
|
testCompile 'org.springframework.security:spring-security-config'
|
|
testCompile 'org.springframework.security:spring-security-test'
|
|
testCompile 'javax.servlet:javax.servlet-api'
|
|
testCompile 'org.awaitility:awaitility'
|
|
testRuntime 'org.apache.logging.log4j:log4j-core'
|
|
}
|
|
|
|
task testJar(type: Jar) {
|
|
classifier = 'tests'
|
|
from sourceSets.test.output
|
|
}
|
|
|
|
artifacts {
|
|
testArtifacts testJar
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-autoconfigure') {
|
|
description = 'Spring State Machine Boot Autoconfigure'
|
|
|
|
dependencies {
|
|
compile project(':spring-statemachine-core')
|
|
compile 'org.springframework.boot:spring-boot-autoconfigure'
|
|
compile 'org.springframework.boot:spring-boot-actuator-autoconfigure'
|
|
compile 'org.springframework.boot:spring-boot-actuator'
|
|
optional project(':spring-statemachine-data-common:spring-statemachine-data-jpa')
|
|
optional project(':spring-statemachine-data-common:spring-statemachine-data-redis')
|
|
optional project(':spring-statemachine-data-common:spring-statemachine-data-mongodb')
|
|
optional 'org.springframework.boot:spring-boot-autoconfigure-processor'
|
|
optional 'io.micrometer:micrometer-core'
|
|
optional 'org.eclipse.persistence:javax.persistence'
|
|
optional 'org.springframework.boot:spring-boot-starter-data-jpa'
|
|
optional 'org.springframework.boot:spring-boot-starter-data-redis'
|
|
optional 'org.springframework.boot:spring-boot-starter-data-mongodb'
|
|
testRuntime 'com.h2database:h2'
|
|
testCompile 'org.springframework.boot:spring-boot-test'
|
|
testCompile 'org.springframework:spring-test'
|
|
testCompile 'org.hamcrest:hamcrest-core'
|
|
testCompile 'org.hamcrest:hamcrest-library'
|
|
testCompile 'junit:junit'
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-test') {
|
|
description = "Spring State Machine Test"
|
|
|
|
dependencies {
|
|
compile 'org.springframework:spring-context'
|
|
compile project(':spring-statemachine-core')
|
|
compile 'org.springframework:spring-test'
|
|
compile 'org.hamcrest:hamcrest-core'
|
|
compile 'org.hamcrest:hamcrest-library'
|
|
compile 'junit:junit'
|
|
compile 'org.assertj:assertj-core'
|
|
testCompile('org.mockito:mockito-core') { dep ->
|
|
exclude group: 'org.hamcrest'
|
|
}
|
|
testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts')
|
|
testCompile 'io.projectreactor:reactor-test'
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-kryo') {
|
|
description = 'Spring State Machine Kryo'
|
|
|
|
dependencies {
|
|
compile project(':spring-statemachine-core')
|
|
compile 'com.esotericsoftware:kryo-shaded'
|
|
|
|
testCompile project(':spring-statemachine-test')
|
|
testCompile 'org.springframework:spring-test'
|
|
testCompile 'org.hamcrest:hamcrest-core'
|
|
testCompile 'org.hamcrest:hamcrest-library'
|
|
testCompile 'junit:junit'
|
|
testRuntime 'org.apache.logging.log4j:log4j-core'
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-zookeeper') {
|
|
description = 'Spring State Machine Zookeeper'
|
|
|
|
dependencies {
|
|
compile 'org.springframework:spring-context'
|
|
compile project(':spring-statemachine-core')
|
|
compile project(':spring-statemachine-kryo')
|
|
compile 'org.apache.curator:curator-recipes'
|
|
// github.com/spring-gradle-plugins/dependency-management-plugin/issues/136
|
|
runtime 'log4j:log4j'
|
|
|
|
testCompile project(':spring-statemachine-test')
|
|
testCompile 'org.apache.curator:curator-test'
|
|
testCompile 'org.springframework:spring-test'
|
|
testCompile 'org.hamcrest:hamcrest-core'
|
|
testCompile 'org.hamcrest:hamcrest-library'
|
|
testCompile 'junit:junit'
|
|
testRuntime 'org.apache.logging.log4j:log4j-core'
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-data-common') {
|
|
configurations {
|
|
testArtifacts.extendsFrom testRuntime
|
|
}
|
|
dependencies {
|
|
compile project(':spring-statemachine-core')
|
|
compile project(':spring-statemachine-kryo')
|
|
compile 'org.springframework.data:spring-data-commons'
|
|
optional 'org.springframework.security:spring-security-core'
|
|
compile 'com.fasterxml.jackson.core:jackson-core'
|
|
compile 'com.fasterxml.jackson.core:jackson-databind'
|
|
testCompile project(':spring-statemachine-test')
|
|
testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts')
|
|
testCompile 'io.projectreactor:reactor-test'
|
|
testCompile 'org.springframework.boot:spring-boot-starter-test'
|
|
testRuntime 'org.springframework.boot:spring-boot-starter-web'
|
|
}
|
|
task testJar(type: Jar) {
|
|
classifier = 'tests'
|
|
from sourceSets.test.output
|
|
}
|
|
artifacts {
|
|
testArtifacts testJar
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-cluster') {
|
|
description = 'Spring State Machine Cluster'
|
|
|
|
dependencies {
|
|
compile project(':spring-statemachine-zookeeper')
|
|
compile 'org.springframework.integration:spring-integration-zookeeper'
|
|
|
|
testCompile project(':spring-statemachine-test')
|
|
testCompile 'org.apache.curator:curator-test'
|
|
testCompile 'org.springframework:spring-test'
|
|
testCompile 'org.hamcrest:hamcrest-core'
|
|
testCompile 'org.hamcrest:hamcrest-library'
|
|
testCompile 'junit:junit'
|
|
testRuntime 'org.apache.logging.log4j:log4j-core'
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-uml') {
|
|
description = 'Spring State Machine Uml'
|
|
|
|
dependencies {
|
|
compile project(':spring-statemachine-core')
|
|
optional 'org.springframework.security:spring-security-core'
|
|
|
|
// these eclipse maven deps are simply broken
|
|
compile('org.eclipse.uml2:uml') { dep ->
|
|
exclude group: 'org.eclipse.core', module: 'runtime'
|
|
exclude group: 'org.eclipse.emf', module: 'ecore'
|
|
exclude group: 'org.eclipse.emf.ecore', module: 'xmi'
|
|
exclude group: 'org.eclipse.emf.mapping', module: 'ecore2xml'
|
|
exclude group: 'org.eclipse.uml2', module: 'common'
|
|
exclude group: 'org.eclipse.uml2', module: 'types'
|
|
}
|
|
compile('org.eclipse.uml2:types') { dep ->
|
|
exclude group: 'org.eclipse.core', module: 'runtime'
|
|
exclude group: 'org.eclipse.emf', module: 'ecore'
|
|
exclude group: 'org.eclipse.uml2', module: 'common'
|
|
}
|
|
compile('org.eclipse.uml2:common') { dep ->
|
|
exclude group: 'org.eclipse.core', module: 'runtime'
|
|
exclude group: 'org.eclipse.emf', module: 'ecore'
|
|
}
|
|
compile 'org.eclipse.emf:org.eclipse.emf.ecore.xmi'
|
|
compile 'org.eclipse.emf:org.eclipse.emf.ecore'
|
|
compile 'org.eclipse.emf:org.eclipse.emf.common'
|
|
testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts')
|
|
testCompile 'io.projectreactor:reactor-test'
|
|
testCompile 'org.springframework:spring-test'
|
|
testCompile 'org.hamcrest:hamcrest-core'
|
|
testCompile 'org.hamcrest:hamcrest-library'
|
|
testCompile 'junit:junit'
|
|
testCompile 'org.awaitility:awaitility'
|
|
testRuntime 'org.apache.logging.log4j:log4j-core'
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-build-tests') {
|
|
description = 'Spring State Machine Build Tests'
|
|
tasks.findByPath('artifactoryPublish')?.enabled = false
|
|
|
|
dependencies {
|
|
testCompile project(':spring-statemachine-uml')
|
|
testCompile project(':spring-statemachine-test')
|
|
testCompile project(':spring-statemachine-data-common:spring-statemachine-data-jpa')
|
|
testCompile project(':spring-statemachine-data-common:spring-statemachine-data-redis')
|
|
testCompile project(':spring-statemachine-data-common:spring-statemachine-data-mongodb')
|
|
testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts')
|
|
testCompile 'io.projectreactor:reactor-test'
|
|
testCompile 'org.apache.commons:commons-pool2'
|
|
testRuntime 'org.springframework.boot:spring-boot-starter-data-mongodb'
|
|
testRuntime 'org.springframework.boot:spring-boot-starter-data-redis'
|
|
testRuntime 'redis.clients:jedis'
|
|
testCompile 'org.springframework.boot:spring-boot-starter-data-jpa'
|
|
testCompile 'com.h2database:h2'
|
|
testCompile 'org.springframework.boot:spring-boot-starter'
|
|
testCompile 'org.springframework:spring-test'
|
|
testCompile 'org.hamcrest:hamcrest-core'
|
|
testCompile 'org.hamcrest:hamcrest-library'
|
|
testCompile 'junit:junit'
|
|
}
|
|
}
|
|
|
|
configure(recipeProjects()) {
|
|
dependencies {
|
|
compile project(':spring-statemachine-recipes-common')
|
|
testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts')
|
|
testCompile 'io.projectreactor:reactor-test'
|
|
testCompile 'org.springframework:spring-test'
|
|
testCompile 'org.hamcrest:hamcrest-core'
|
|
testCompile 'org.hamcrest:hamcrest-library'
|
|
testCompile 'junit:junit'
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-recipes-common') {
|
|
dependencies {
|
|
compile 'org.springframework:spring-context'
|
|
compile project(':spring-statemachine-core')
|
|
testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts')
|
|
testCompile 'io.projectreactor:reactor-test'
|
|
testCompile 'org.springframework:spring-test'
|
|
testCompile 'org.hamcrest:hamcrest-core'
|
|
testCompile 'org.hamcrest:hamcrest-library'
|
|
testCompile 'junit:junit'
|
|
}
|
|
}
|
|
|
|
project('spring-statemachine-bom') {
|
|
description = 'Spring Statemachine (Bill of Materials)'
|
|
|
|
dependencyManagement {
|
|
generatedPomCustomization {
|
|
enabled = false
|
|
}
|
|
}
|
|
|
|
configurations.archives.artifacts.clear()
|
|
artifacts {
|
|
// work around GRADLE-2406 by attaching text artifact
|
|
archives(file('spring-statemachine-bom.txt'))
|
|
}
|
|
|
|
install {
|
|
repositories.mavenInstaller {
|
|
pom.whenConfigured {
|
|
packaging = 'pom'
|
|
withXml {
|
|
asNode().children().last() + {
|
|
delegate.dependencyManagement {
|
|
delegate.dependencies {
|
|
parent.subprojects.sort { "$it.name" }.each { p ->
|
|
if (!p.name.contains('spring-statemachine-samples') &&
|
|
!p.name.contains('spring-statemachine-build-tests') &&
|
|
p != project) {
|
|
delegate.dependency {
|
|
delegate.groupId(p.group)
|
|
delegate.artifactId(p.name)
|
|
delegate.version(p.version)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
project('spring-statemachine-starter') {
|
|
description = 'Spring Statemachine Starter'
|
|
dependencies {
|
|
compile project(':spring-statemachine-autoconfigure')
|
|
compile 'org.springframework.boot:spring-boot-starter'
|
|
}
|
|
|
|
install {
|
|
repositories.mavenInstaller {
|
|
pom.whenConfigured {
|
|
withXml {
|
|
asNode().children().first() + {
|
|
delegate.parent {
|
|
delegate.groupId('org.springframework.boot')
|
|
delegate.artifactId('spring-boot-starter-parent')
|
|
delegate.version("$springBootVersion")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
configure(sampleProjects()) {
|
|
apply plugin: 'org.springframework.boot'
|
|
tasks.findByPath('artifactoryPublish')?.enabled = false
|
|
// as samples are not published, we can use jdk8
|
|
compileJava {
|
|
sourceCompatibility = 1.8
|
|
targetCompatibility = 1.8
|
|
}
|
|
dependencies {
|
|
compile project(':spring-statemachine-core')
|
|
compile 'org.springframework:spring-context-support'
|
|
testCompile('org.mockito:mockito-core') { dep ->
|
|
exclude group: 'org.hamcrest'
|
|
}
|
|
testCompile project(':spring-statemachine-test')
|
|
testCompile 'org.springframework.boot:spring-boot-test'
|
|
testCompile 'org.springframework:spring-test'
|
|
testCompile 'org.hamcrest:hamcrest-core'
|
|
testCompile 'org.hamcrest:hamcrest-library'
|
|
testCompile 'junit:junit'
|
|
}
|
|
bootJar {
|
|
excludeDevtools = false
|
|
}
|
|
build.dependsOn bootJar
|
|
}
|
|
|
|
project('spring-statemachine-samples-common') {
|
|
tasks.findByPath('artifactoryPublish')?.enabled = false
|
|
dependencies {
|
|
compile project(':spring-statemachine-core')
|
|
compile 'org.springframework.shell:spring-shell'
|
|
compile 'org.springframework.boot:spring-boot-starter'
|
|
testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts')
|
|
}
|
|
}
|
|
|
|
configure(rootProject) {
|
|
description = 'Spring State Machine'
|
|
|
|
apply plugin: 'org.asciidoctor.gradle.asciidoctor'
|
|
|
|
dependencies {
|
|
// just used to get version into docs
|
|
compile 'org.springframework:spring-core'
|
|
compile 'org.springframework.boot:spring-boot'
|
|
}
|
|
|
|
// don't publish the default jar for the root project
|
|
configurations.archives.artifacts.clear()
|
|
|
|
afterEvaluate {
|
|
tasks.findAll { it.name.startsWith('reference') }.each{ it.dependsOn.add('asciidoctor') }
|
|
}
|
|
|
|
asciidoctorj {
|
|
version = '1.5.8.1'
|
|
}
|
|
|
|
configurations {
|
|
docs
|
|
}
|
|
|
|
task prepareAsciidocBuild(type: Sync) {
|
|
dependsOn configurations.docs
|
|
// copy doc resources
|
|
from {
|
|
configurations.docs.collect { zipTree(it) }
|
|
}
|
|
// and doc sources
|
|
from 'docs/src/reference/asciidoc/'
|
|
// to a build directory of your choice
|
|
into "$buildDir/asciidoc/assemble"
|
|
}
|
|
|
|
task('reference', type: org.asciidoctor.gradle.AsciidoctorTask){
|
|
dependsOn 'prepareAsciidocBuild'
|
|
dependsOn 'copyDocsSamples'
|
|
backends 'pdf'
|
|
sourceDir "$buildDir/asciidoc/assemble"
|
|
sources {
|
|
include 'index.adoc'
|
|
}
|
|
options doctype: 'book', eruby: 'erubis'
|
|
logDocuments = true
|
|
attributes 'icons': 'font',
|
|
'sectanchors': '',
|
|
'toc': '',
|
|
'source-highlighter' : 'coderay'
|
|
}
|
|
|
|
asciidoctor {
|
|
dependsOn 'prepareAsciidocBuild'
|
|
dependsOn 'copyDocsSamples'
|
|
backends 'html5'
|
|
sourceDir "$buildDir/asciidoc/assemble"
|
|
sources {
|
|
include 'index.adoc'
|
|
}
|
|
resources {
|
|
from(sourceDir) {
|
|
include 'images/*', 'css/**', 'js/**', 'samples/**'
|
|
}
|
|
}
|
|
options doctype: 'book', eruby: 'erubis'
|
|
logDocuments = true
|
|
attributes 'docinfo': 'shared',
|
|
toc: 'left',
|
|
'toc-levels': '4',
|
|
// use provided stylesheet
|
|
stylesdir: "css/",
|
|
stylesheet: 'spring.css',
|
|
'linkcss': true,
|
|
'icons': 'font',
|
|
'sectanchors': '',
|
|
// use provided highlighter
|
|
'source-highlighter=highlight.js',
|
|
'highlightjsdir=js/highlight',
|
|
'highlightjs-theme=atom-one-dark-reasonable',
|
|
'idprefix': '',
|
|
'idseparator': '-'
|
|
}
|
|
|
|
dependencies { // for integration tests
|
|
docs "io.spring.docresources:spring-doc-resources:${docResourcesVersion}@zip"
|
|
}
|
|
|
|
task copyDocsSamples(type: Copy) {
|
|
from 'spring-statemachine-core/src/test/java/org/springframework/statemachine/docs'
|
|
from 'spring-statemachine-test/src/test/java/org/springframework/statemachine/test/docs'
|
|
from 'spring-statemachine-recipes/src/test/java/org/springframework/statemachine/recipes/docs'
|
|
from 'spring-statemachine-zookeeper/src/test/java/org/springframework/statemachine/zookeeper/docs'
|
|
from 'spring-statemachine-uml/src/test/java/org/springframework/statemachine/uml/docs'
|
|
from 'spring-statemachine-uml/src/test/resources/org/springframework/statemachine/uml/docs'
|
|
from 'spring-statemachine-data/jpa/src/test/java/org/springframework/statemachine/data/jpa/docs'
|
|
from 'spring-statemachine-data/redis/src/test/java/org/springframework/statemachine/data/redis/docs'
|
|
from 'spring-statemachine-data/mongodb/src/test/java/org/springframework/statemachine/data/mongodb/docs'
|
|
from 'spring-statemachine-samples/src/main/java/'
|
|
from 'spring-statemachine-samples/washer/src/main/java/'
|
|
from 'spring-statemachine-samples/tasks/src/main/java/'
|
|
from 'spring-statemachine-samples/turnstile/src/main/java/'
|
|
from 'spring-statemachine-samples/turnstilereactive/src/main/java/'
|
|
from 'spring-statemachine-samples/showcase/src/main/java/'
|
|
from 'spring-statemachine-samples/cdplayer/src/main/java/'
|
|
from 'spring-statemachine-samples/persist/src/main/java/'
|
|
from 'spring-statemachine-samples/zookeeper/src/main/java/'
|
|
from 'spring-statemachine-samples/security/src/main/java/'
|
|
from 'spring-statemachine-samples/eventservice/src/main/java/'
|
|
from 'spring-statemachine-samples/datajpa/src/main/java/'
|
|
from 'spring-statemachine-samples/datajpa/src/main/resources/'
|
|
from 'spring-statemachine-samples/datajpamultipersist/src/main/java/'
|
|
from 'spring-statemachine-samples/datajpamultipersist/src/main/resources/'
|
|
from 'spring-statemachine-samples/datapersist/src/main/java/'
|
|
from 'spring-statemachine-samples/monitoring/src/main/java/'
|
|
include '**/*.java'
|
|
include '**/*.uml'
|
|
include '**/*.json'
|
|
into 'docs/src/reference/asciidoc/samples'
|
|
}
|
|
|
|
task api(type: Javadoc) {
|
|
group = 'Documentation'
|
|
description = 'Generates aggregated Javadoc API documentation.'
|
|
title = "${rootProject.description} ${version} API"
|
|
options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
|
|
options.author = true
|
|
options.header = rootProject.description
|
|
options.links(
|
|
'https://docs.jboss.org/jbossas/javadoc/4.0.5/connector'
|
|
)
|
|
|
|
// disable javadocs for samples
|
|
source subprojects
|
|
.findAll { project ->
|
|
!project.name.contains('samples')
|
|
}
|
|
.collect { project ->
|
|
project.sourceSets.main.allJava
|
|
}
|
|
|
|
destinationDir = new File(buildDir, "api")
|
|
classpath = files(subprojects.collect { project ->
|
|
project.sourceSets.main.compileClasspath
|
|
})
|
|
maxMemory = '1024m'
|
|
}
|
|
|
|
task docsZip(type: Zip) {
|
|
group = 'Distribution'
|
|
classifier = 'docs'
|
|
description = "Builds -${classifier} archive containing api and reference for deployment."
|
|
from('src/dist') {
|
|
include 'changelog.txt'
|
|
}
|
|
from (api) {
|
|
into 'api'
|
|
}
|
|
from (reference) {
|
|
into 'reference'
|
|
include 'index.pdf'
|
|
}
|
|
from (asciidoctor) {
|
|
into 'reference'
|
|
include 'index.html'
|
|
include 'js/**'
|
|
include 'css/**'
|
|
include 'images/**'
|
|
include 'samples/**'
|
|
}
|
|
}
|
|
|
|
task distZip(type: Zip, dependsOn: [docsZip]) {
|
|
group = 'Distribution'
|
|
classifier = 'dist'
|
|
description = "Builds -${classifier} archive, containing all jars and docs, " +
|
|
"suitable for community download page."
|
|
|
|
ext.baseDir = "${project.name}-${project.version}";
|
|
|
|
from('src/dist') {
|
|
include 'readme.txt'
|
|
include 'license.txt'
|
|
include 'notice.txt'
|
|
into "${baseDir}"
|
|
expand(copyright: new Date().format('yyyy'), version: project.version)
|
|
}
|
|
|
|
from(zipTree(docsZip.archivePath)) {
|
|
into "${baseDir}/docs"
|
|
}
|
|
|
|
subprojects.each { subproject ->
|
|
into ("${baseDir}/libs") {
|
|
from subproject.jar
|
|
if (subproject.tasks.findByPath('sourcesJar')) {
|
|
from subproject.sourcesJar
|
|
}
|
|
if (subproject.tasks.findByPath('javadocJar')) {
|
|
from subproject.javadocJar
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
artifacts {
|
|
archives docsZip
|
|
archives distZip
|
|
}
|
|
}
|