diff --git a/build.gradle b/build.gradle index 8f27778b..0eb63657 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ buildscript { eclipseEmfEcoreVersion = '2.11.1-v20150805-0538' eclipseUml2UmlVersion = '5.0.0-v20140602-0749' curatorVersion = '2.11.1' - docResourcesVersion = '0.2.5' + springAsciidoctorBackends = '0.0.5' awaitilityVersion = '3.1.6' reactorBlockHoundVersion = '1.0.4.RELEASE' } @@ -22,14 +22,21 @@ buildscript { maven { url 'https://repo.spring.io/plugins-release' } } dependencies { - classpath("io.spring.gradle:propdeps-plugin:0.0.8") classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion") } } plugins { - id 'org.asciidoctor.jvm.convert' version '3.1.0' - id 'org.asciidoctor.jvm.pdf' version '3.1.0' + id 'org.asciidoctor.jvm.convert' version '3.3.2' + id 'org.asciidoctor.jvm.pdf' version '3.3.2' +} + +ext { + moduleProjects = subprojects.findAll { + it.name.startsWith("spring-statemachine-") && !it.name.contains("samples") && !it.name.contains("-bom") && !it.name.contains("-platform") + } + javaProjects = subprojects - project(":spring-statemachine-bom") - project(":spring-statemachine-platform") + javaProjectsAndRoot = javaProjects + rootProject } def recipeProjects() { @@ -46,25 +53,17 @@ def sampleProjects() { def getResolvedVersionOf(dependency) { // used for resolving version to docs - return configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.findAll { it.moduleName == dependency }[0].moduleVersion + return configurations.compileClasspath.resolvedConfiguration.firstLevelModuleDependencies.findAll { it.moduleName == dependency }[0].moduleVersion } -configure(allprojects) { - apply plugin: 'java' +configure(javaProjectsAndRoot) { + apply plugin: 'java-library' apply plugin: 'eclipse' - apply plugin: 'io.spring.dependency-management' apply plugin: 'idea' - apply plugin: 'propdeps' + apply plugin: 'org.springframework.statemachine.optional-dependencies' - if (System.env.TRAVIS == 'true') { - tasks.withType(GroovyCompile) { - groovyOptions.fork = false - } - tasks.withType(Test) { - maxParallelForks = 1 - minHeapSize = '256m' - maxHeapSize = '384m' - } + tasks.withType(GenerateModuleMetadata) { + enabled = false } compileJava { @@ -88,27 +87,17 @@ configure(allprojects) { maven { url 'https://repo.spring.io/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:$reactorBlockHoundVersion" - dependency "io.projectreactor.tools:blockhound-junit-platform:$reactorBlockHoundVersion" + configurations { + dependencyManagement { + canBeConsumed = false + canBeResolved = false + visible = false } + matching { it.name.endsWith("Classpath") }.all { it.extendsFrom(dependencyManagement) } + } + + dependencies { + dependencyManagement(enforcedPlatform(dependencies.project(path: ":spring-statemachine-platform"))) } task integrationTest(type: Test) { @@ -142,17 +131,17 @@ configure(allprojects) { } } -configure(subprojects) { subproject -> - apply from: "${rootProject.projectDir}/publish-maven.gradle" +configure(javaProjects) { subproject -> + apply from: "$rootDir/gradle/publications.gradle" dependencies { - testCompile("org.junit.jupiter:junit-jupiter-api") - testCompile("io.projectreactor.tools:blockhound") - testCompile("org.springframework.boot:spring-boot-starter-test") - testRuntime("org.junit.jupiter:junit-jupiter-engine") + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("io.projectreactor.tools:blockhound") + testImplementation("org.springframework.boot:spring-boot-starter-test") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") if (project.hasProperty('statemachineBlockHound') && statemachineBlockHound.toBoolean()) { - testRuntime("org.junit.platform:junit-platform-launcher") - testRuntime("io.projectreactor.tools:blockhound-junit-platform") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") + testRuntimeOnly("io.projectreactor.tools:blockhound-junit-platform") } } @@ -193,56 +182,45 @@ configure(subprojects) { subproject -> from javadoc } - artifacts { - archives sourcesJar - archives javadocJar - } - - eclipse { - classpath { - plusConfigurations += [ configurations.optional ] + publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + } } } } project('spring-statemachine-core') { + apply from: "$rootDir/gradle/java-test-fixtures.gradle" description = 'Spring State Machine Core' - configurations { - testArtifacts - } - dependencies { - compile 'org.springframework:spring-tx' - compile 'org.springframework:spring-messaging' - compile 'io.projectreactor:reactor-core' + api 'org.springframework:spring-tx' + api 'org.springframework:spring-messaging' + api '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.mockito:mockito-core') { dep -> + testImplementation 'org.springframework:spring-test' + testImplementation 'org.springframework:spring-web' + testImplementation 'org.springframework:spring-webmvc' + testImplementation 'io.projectreactor:reactor-test' + testFixturesImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.apache.tomcat.embed:tomcat-embed-core' + testImplementation('org.mockito:mockito-core') { dep -> exclude group: 'org.hamcrest' } - testCompile("org.junit.jupiter:junit-jupiter-api") - testCompile("org.junit.jupiter:junit-jupiter-engine") - 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 + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("org.junit.jupiter:junit-jupiter-engine") + testImplementation 'org.assertj:assertj-core' + testFixturesImplementation 'org.assertj:assertj-core' + testImplementation 'org.springframework.security:spring-security-config' + testImplementation 'org.springframework.security:spring-security-test' + testImplementation 'javax.servlet:javax.servlet-api' + testImplementation 'org.awaitility:awaitility' + testRuntimeOnly 'org.apache.logging.log4j:log4j-core' } } @@ -250,10 +228,10 @@ 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' + api project(':spring-statemachine-core') + api 'org.springframework.boot:spring-boot-autoconfigure' + api 'org.springframework.boot:spring-boot-actuator-autoconfigure' + api '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') @@ -263,32 +241,33 @@ project('spring-statemachine-autoconfigure') { 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.junit.jupiter:junit-jupiter-api") - testCompile("org.junit.jupiter:junit-jupiter-engine") + testRuntimeOnly 'com.h2database:h2' + testImplementation 'org.springframework.boot:spring-boot-test' + testImplementation 'org.springframework:spring-test' + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("org.junit.jupiter:junit-jupiter-engine") } } project('spring-statemachine-test') { + apply from: "$rootDir/gradle/java-test-fixtures.gradle" 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 'org.assertj:assertj-core' + api 'org.springframework:spring-context' + api project(':spring-statemachine-core') + api 'org.springframework:spring-test' + api 'org.hamcrest:hamcrest-core' + api 'org.hamcrest:hamcrest-library' + api 'org.assertj:assertj-core' optional 'junit:junit' optional 'org.junit.jupiter:junit-jupiter-api' optional 'org.junit.vintage:junit-vintage-engine' - testCompile('org.mockito:mockito-core') { dep -> + testImplementation('org.mockito:mockito-core') { dep -> exclude group: 'org.hamcrest' } - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } @@ -296,17 +275,17 @@ project('spring-statemachine-kryo') { description = 'Spring State Machine Kryo' dependencies { - compile project(':spring-statemachine-core') - compile 'com.esotericsoftware:kryo-shaded' + api project(':spring-statemachine-core') + api 'com.esotericsoftware:kryo-shaded' - testCompile (project(':spring-statemachine-test')) { dep -> + testImplementation (project(':spring-statemachine-test')) { dep -> exclude group: 'junit', module: 'junit' exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } - testCompile 'org.springframework:spring-test' - testCompile("org.junit.jupiter:junit-jupiter-api") - testCompile("org.junit.jupiter:junit-jupiter-engine") - testRuntime 'org.apache.logging.log4j:log4j-core' + testImplementation 'org.springframework:spring-test' + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("org.junit.jupiter:junit-jupiter-engine") + testRuntimeOnly 'org.apache.logging.log4j:log4j-core' } } @@ -314,51 +293,48 @@ 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' + api 'org.springframework:spring-context' + api project(':spring-statemachine-core') + api project(':spring-statemachine-kryo') + api 'org.apache.curator:curator-recipes' // github.com/spring-gradle-plugins/dependency-management-plugin/issues/136 - runtime 'log4j:log4j' + compileOnly 'log4j:log4j' - testCompile (project(':spring-statemachine-test')) { dep -> + testImplementation (project(':spring-statemachine-test')) { dep -> exclude group: 'junit', module: 'junit' exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } - testCompile 'org.apache.curator:curator-test' - testCompile 'org.springframework:spring-test' - testCompile("org.junit.jupiter:junit-jupiter-api") - testCompile("org.junit.jupiter:junit-jupiter-engine") - testRuntime 'org.apache.logging.log4j:log4j-core' + testImplementation 'org.apache.curator:curator-test' + testImplementation 'org.springframework:spring-test' + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("org.junit.jupiter:junit-jupiter-engine") + testRuntimeOnly 'org.apache.logging.log4j:log4j-core' } } project('spring-statemachine-data-common') { - configurations { - testArtifacts.extendsFrom testRuntime - } + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-core') - compile project(':spring-statemachine-kryo') - compile 'org.springframework.data:spring-data-commons' + api project(':spring-statemachine-core') + api project(':spring-statemachine-kryo') + api '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')) { dep -> + api 'com.fasterxml.jackson.core:jackson-core' + api 'com.fasterxml.jackson.core:jackson-databind' + testImplementation (project(':spring-statemachine-test')) { dep -> exclude group: 'junit', module: 'junit' exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } - 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 + testFixturesImplementation (project(':spring-statemachine-test')) { dep -> + exclude group: 'junit', module: 'junit' + exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' + } + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testFixturesImplementation 'org.springframework.boot:spring-boot-starter-test' + testRuntimeOnly 'org.springframework.boot:spring-boot-starter-web' } } @@ -366,30 +342,31 @@ project('spring-statemachine-cluster') { description = 'Spring State Machine Cluster' dependencies { - compile project(':spring-statemachine-zookeeper') - compile 'org.springframework.integration:spring-integration-zookeeper' + api project(':spring-statemachine-zookeeper') + api 'org.springframework.integration:spring-integration-zookeeper' - testCompile (project(':spring-statemachine-test')) { dep -> + testImplementation (project(':spring-statemachine-test')) { dep -> exclude group: 'junit', module: 'junit' exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } - testCompile 'org.apache.curator:curator-test' - testCompile 'org.springframework:spring-test' - testCompile("org.junit.jupiter:junit-jupiter-api") - testCompile("org.junit.jupiter:junit-jupiter-engine") - testRuntime 'org.apache.logging.log4j:log4j-core' + testImplementation 'org.apache.curator:curator-test' + testImplementation 'org.springframework:spring-test' + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("org.junit.jupiter:junit-jupiter-engine") + testRuntimeOnly 'org.apache.logging.log4j:log4j-core' } } project('spring-statemachine-uml') { + apply from: "$rootDir/gradle/java-test-fixtures.gradle" description = 'Spring State Machine Uml' dependencies { - compile project(':spring-statemachine-core') + api project(':spring-statemachine-core') optional 'org.springframework.security:spring-security-core' // these eclipse maven deps are simply broken - compile('org.eclipse.uml2:uml') { dep -> + api('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' @@ -397,111 +374,101 @@ project('spring-statemachine-uml') { exclude group: 'org.eclipse.uml2', module: 'common' exclude group: 'org.eclipse.uml2', module: 'types' } - compile('org.eclipse.uml2:types') { dep -> + api('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 -> + api('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.junit.jupiter:junit-jupiter-api") - testCompile("org.junit.jupiter:junit-jupiter-engine") - testCompile 'org.awaitility:awaitility' - testRuntime 'org.apache.logging.log4j:log4j-core' + api 'org.eclipse.emf:org.eclipse.emf.ecore.xmi' + api 'org.eclipse.emf:org.eclipse.emf.ecore' + api 'org.eclipse.emf:org.eclipse.emf.common' + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.springframework:spring-test' + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("org.junit.jupiter:junit-jupiter-engine") + testImplementation 'org.awaitility:awaitility' + testRuntimeOnly 'org.apache.logging.log4j:log4j-core' } } project('spring-statemachine-build-tests') { + apply from: "$rootDir/gradle/java-test-fixtures.gradle" description = 'Spring State Machine Build Tests' 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' + testImplementation project(':spring-statemachine-uml') + testImplementation project(':spring-statemachine-test') + testImplementation project(':spring-statemachine-data-common:spring-statemachine-data-jpa') + testImplementation project(':spring-statemachine-data-common:spring-statemachine-data-redis') + testImplementation project(':spring-statemachine-data-common:spring-statemachine-data-mongodb') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.apache.commons:commons-pool2' + testRuntimeOnly 'org.springframework.boot:spring-boot-starter-data-mongodb' + testRuntimeOnly 'org.springframework.boot:spring-boot-starter-data-redis' + testRuntimeOnly 'redis.clients:jedis' + testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa' + testImplementation 'com.h2database:h2' + testImplementation 'org.springframework.boot:spring-boot-starter' + testImplementation 'org.springframework:spring-test' } } configure(recipeProjects()) { + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + 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.junit.jupiter:junit-jupiter-api") - testCompile("org.junit.jupiter:junit-jupiter-engine") + api project(':spring-statemachine-recipes-common') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.springframework:spring-test' + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("org.junit.jupiter:junit-jupiter-engine") } } project('spring-statemachine-recipes-common') { + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + 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.junit.jupiter:junit-jupiter-api") - testCompile("org.junit.jupiter:junit-jupiter-engine") + api 'org.springframework:spring-context' + api project(':spring-statemachine-core') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.springframework:spring-test' + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("org.junit.jupiter:junit-jupiter-engine") } } project('spring-statemachine-bom') { + apply plugin: 'java-platform' + apply from: "$rootDir/gradle/publications.gradle" description = 'Spring Statemachine (Bill of Materials)' + group = 'org.springframework.statemachine' - dependencyManagement { - generatedPomCustomization { - enabled = false + tasks.withType(GenerateModuleMetadata) { + enabled = false + } + + dependencies { + constraints { + parent.moduleProjects.sort { "$it.name" }.each { + api it + } } } - 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) - } - } - } - } - } - } - } + publishing { + publications { + mavenJava(MavenPublication) { + artifactId = 'spring-statemachine-bom' + from components.javaPlatform } } } @@ -511,24 +478,8 @@ project('spring-statemachine-bom') { 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") - } - } - } - } - } + api project(':spring-statemachine-autoconfigure') + api 'org.springframework.boot:spring-boot-starter' } } @@ -539,19 +490,19 @@ configure(sampleProjects()) { targetCompatibility = 1.8 } dependencies { - compile project(':spring-statemachine-core') - compile 'org.springframework:spring-context-support' - testCompile('org.mockito:mockito-core') { dep -> + api project(':spring-statemachine-core') + api 'org.springframework:spring-context-support' + testImplementation('org.mockito:mockito-core') { dep -> exclude group: 'org.hamcrest' } - testCompile (project(':spring-statemachine-test')) { dep -> + testImplementation (project(':spring-statemachine-test')) { dep -> exclude group: 'junit', module: 'junit' exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } - testCompile 'org.springframework.boot:spring-boot-test' - testCompile 'org.springframework:spring-test' - testCompile("org.junit.jupiter:junit-jupiter-api") - testCompile("org.junit.jupiter:junit-jupiter-engine") + testImplementation 'org.springframework.boot:spring-boot-test' + testImplementation 'org.springframework:spring-test' + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("org.junit.jupiter:junit-jupiter-engine") } build.dependsOn bootJar @@ -561,15 +512,18 @@ configure(sampleProjects()) { } project('spring-statemachine-samples-common') { + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + 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') + api project(':spring-statemachine-core') + api 'org.springframework.shell:spring-shell' + api 'org.springframework.boot:spring-boot-starter' + testImplementation(testFixtures(project(":spring-statemachine-core"))) } } configure(rootProject) { + apply from: "$rootDir/gradle/publications.gradle" description = 'Spring State Machine' pluginManager.withPlugin('com.jfrog.artifactory') { @@ -588,8 +542,8 @@ configure(rootProject) { dependencies { // just used to get version into docs - compile 'org.springframework:spring-core' - compile 'org.springframework.boot:spring-boot' + api 'org.springframework:spring-core' + api 'org.springframework.boot:spring-boot' } // don't publish the default jar for the root project @@ -604,18 +558,18 @@ configure(rootProject) { } 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" } + asciidoctorj { + version = '2.4.3' + } + asciidoctor { + configurations "docs" dependsOn 'prepareAsciidocBuild' dependsOn 'copyDocsSamples' baseDirFollowsSourceFile() @@ -628,6 +582,9 @@ configure(rootProject) { include 'images/*', 'css/**', 'js/**', 'samples/**' } } + outputOptions { + backends "spring-html" + } options doctype: 'book', eruby: 'erubis' attributes \ 'docinfo': 'shared', @@ -647,7 +604,6 @@ configure(rootProject) { } asciidoctorPdf { - dependsOn 'prepareAsciidocBuild' dependsOn 'copyDocsSamples' baseDirFollowsSourceFile() sourceDir "$buildDir/asciidoc/assemble" @@ -663,7 +619,7 @@ configure(rootProject) { } dependencies { // for integration tests - docs "io.spring.docresources:spring-doc-resources:${docResourcesVersion}@zip" + docs "io.spring.asciidoctor.backends:spring-asciidoctor-backends:${springAsciidoctorBackends}" } task copyDocsSamples(type: Copy) { @@ -711,7 +667,7 @@ configure(rootProject) { ) // disable javadocs for samples - source subprojects + source javaProjects .findAll { project -> !project.name.contains('samples') } @@ -720,7 +676,7 @@ configure(rootProject) { } destinationDir = new File(buildDir, "api") - classpath = files(subprojects.collect { project -> + classpath = files(javaProjects.collect { project -> project.sourceSets.main.compileClasspath }) maxMemory = '1024m' @@ -770,7 +726,7 @@ configure(rootProject) { into "${baseDir}/docs" } - subprojects.each { subproject -> + javaProjects.each { subproject -> into ("${baseDir}/libs") { from subproject.jar if (subproject.tasks.findByPath('sourcesJar')) { @@ -838,8 +794,13 @@ configure(rootProject) { } } - artifacts { - archives docsZip - archives distZip + publishing { + publications { + mavenJava(MavenPublication) { + artifact docsZip + artifact distZip + } + } } + } diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle new file mode 100644 index 00000000..68f44bdb --- /dev/null +++ b/buildSrc/build.gradle @@ -0,0 +1,17 @@ +plugins { + id 'java-gradle-plugin' +} + +repositories { + mavenCentral() + gradlePluginPortal() +} + +gradlePlugin { + plugins { + optionalDependenciesPlugin { + id = "org.springframework.statemachine.optional-dependencies" + implementationClass = "org.springframework.statemachine.gradle.OptionalDependenciesPlugin" + } + } +} diff --git a/buildSrc/src/main/java/org/springframework/statemachine/gradle/OptionalDependenciesPlugin.java b/buildSrc/src/main/java/org/springframework/statemachine/gradle/OptionalDependenciesPlugin.java new file mode 100644 index 00000000..dcac8c75 --- /dev/null +++ b/buildSrc/src/main/java/org/springframework/statemachine/gradle/OptionalDependenciesPlugin.java @@ -0,0 +1,59 @@ +/* + * Copyright 2023 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 + * + * https://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. + */ +package org.springframework.statemachine.gradle; + +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.artifacts.Configuration; +import org.gradle.api.plugins.JavaPlugin; +import org.gradle.api.plugins.JavaPluginExtension; +import org.gradle.api.tasks.SourceSetContainer; + +/** + * A {@code Plugin} that adds support for Maven-style optional dependencies. + * Creates a new + * {@code optional} configuration. The {@code optional} configuration is part of + * the + * project's compile and runtime classpaths but does not affect the classpath of + * dependent projects. + * + * @author Janne Valkealahti + */ +public class OptionalDependenciesPlugin implements Plugin { + + /** + * Name of the {@code optional} configuration. + */ + public static final String OPTIONAL_CONFIGURATION_NAME = "optional"; + + @Override + public void apply(Project project) { + Configuration optional = project.getConfigurations().create("optional"); + optional.setCanBeConsumed(false); + optional.setCanBeResolved(false); + project.getPlugins().withType(JavaPlugin.class, (javaPlugin) -> { + SourceSetContainer sourceSets = project.getExtensions().getByType(JavaPluginExtension.class) + .getSourceSets(); + sourceSets.all((sourceSet) -> { + project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName()) + .extendsFrom(optional); + project.getConfigurations().getByName(sourceSet.getRuntimeClasspathConfigurationName()) + .extendsFrom(optional); + }); + }); + } + +} diff --git a/gradle/java-test-fixtures.gradle b/gradle/java-test-fixtures.gradle new file mode 100644 index 00000000..89e4e5a4 --- /dev/null +++ b/gradle/java-test-fixtures.gradle @@ -0,0 +1,16 @@ +apply plugin: 'java-test-fixtures' + +compileTestFixturesJava { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 +} + +eclipse.classpath { + file.whenMerged { classpath -> + classpath.entries.findAll { entry -> entry instanceof org.gradle.plugins.ide.eclipse.model.ProjectDependency && entry.entryAttributes.test } + .each { it.entryAttributes['test'] = 'false' } + } +} + +components.java.withVariantsFromConfiguration(configurations.testFixturesApiElements) { skip() } +components.java.withVariantsFromConfiguration(configurations.testFixturesRuntimeElements) { skip() } diff --git a/gradle/publications.gradle b/gradle/publications.gradle new file mode 100644 index 00000000..5193ed51 --- /dev/null +++ b/gradle/publications.gradle @@ -0,0 +1,50 @@ +apply plugin: "maven-publish" + +publishing { + publications { + mavenJava(MavenPublication) { + pom { + afterEvaluate { + name = project.description + description = project.description + } + url = "https://github.com/spring-projects/spring-statemachine" + organization { + name = "Spring IO" + url = "https://spring.io/spring-statemachine" + } + licenses { + license { + name = "Apache License, Version 2.0" + url = "https://www.apache.org/licenses/LICENSE-2.0" + distribution = "repo" + } + } + scm { + url = "https://github.com/spring-projects/spring-statemachine" + connection = "scm:git:git://github.com/spring-projects/spring-statemachine" + developerConnection = "scm:git:git://github.com/spring-projects/spring-statemachine" + } + developers { + developer { + id = 'jvalkeal' + name = 'Janne Valkealahti' + email = 'janne.valkealahti@gmail.com' + } + } + issueManagement { + system = "GitHub" + url = "https://github.com/spring-projects/spring-statemachine/issues" + } + } + versionMapping { + usage('java-api') { + fromResolutionResult() + } + usage('java-runtime') { + fromResolutionResult() + } + } + } + } +} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 442d9132..774fae87 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index de7a9b25..17af3dd9 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,5 +1,6 @@ rootProject.name = 'spring-statemachine' +include 'spring-statemachine-platform' include 'spring-statemachine-core' include 'spring-statemachine-test' include 'spring-statemachine-kryo' diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/TestUtils.java b/spring-statemachine-core/src/testFixtures/java/org/springframework/statemachine/TestUtils.java similarity index 100% rename from spring-statemachine-core/src/test/java/org/springframework/statemachine/TestUtils.java rename to spring-statemachine-core/src/testFixtures/java/org/springframework/statemachine/TestUtils.java diff --git a/spring-statemachine-data/build.gradle b/spring-statemachine-data/build.gradle index 04c10ad2..929dad5c 100644 --- a/spring-statemachine-data/build.gradle +++ b/spring-statemachine-data/build.gradle @@ -1,52 +1,58 @@ description = 'Spring State Machine Data Common' project('spring-statemachine-data-jpa') { + apply from: "$rootDir/gradle/java-test-fixtures.gradle" description = 'Spring State Machine Data Jpa' + dependencies { - compile project(':spring-statemachine-data-common') - compile 'org.springframework:spring-orm' - testCompile project(':spring-statemachine-test') - testCompile project(path:':spring-statemachine-data-common', configuration:'testArtifacts') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-data-common') + api 'org.springframework:spring-orm' + testImplementation project(':spring-statemachine-test') + testImplementation(testFixtures(project(":spring-statemachine-data-common"))) + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' optional 'org.eclipse.persistence:javax.persistence' - testCompile 'org.hsqldb:hsqldb' - testCompile 'org.springframework.boot:spring-boot-starter-test' - testRuntime 'org.springframework.boot:spring-boot-starter-data-jpa' - testRuntime 'org.springframework.boot:spring-boot-starter-web' + testImplementation 'org.hsqldb:hsqldb' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testRuntimeOnly 'org.springframework.boot:spring-boot-starter-data-jpa' + testRuntimeOnly 'org.springframework.boot:spring-boot-starter-web' } } project('spring-statemachine-data-redis') { + apply from: "$rootDir/gradle/java-test-fixtures.gradle" description = 'Spring State Machine Data Redis' + dependencies { - compile project(':spring-statemachine-data-common') - compile 'org.springframework.data:spring-data-redis' - testCompile project(':spring-statemachine-test') + api project(':spring-statemachine-data-common') + api 'org.springframework.data:spring-data-redis' + testImplementation project(':spring-statemachine-test') optional 'org.eclipse.persistence:javax.persistence' - testCompile project(path:':spring-statemachine-data-common', configuration:'testArtifacts') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' - testCompile 'org.springframework.boot:spring-boot-starter-test' - testRuntime 'org.apache.commons:commons-pool2' - testRuntime 'redis.clients:jedis' - testRuntime 'org.springframework.boot:spring-boot-starter-data-redis' - testRuntime 'org.springframework.boot:spring-boot-starter-web' + testImplementation(testFixtures(project(":spring-statemachine-data-common"))) + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testRuntimeOnly 'org.apache.commons:commons-pool2' + testRuntimeOnly 'redis.clients:jedis' + testRuntimeOnly 'org.springframework.boot:spring-boot-starter-data-redis' + testRuntimeOnly 'org.springframework.boot:spring-boot-starter-web' } } project('spring-statemachine-data-mongodb') { + apply from: "$rootDir/gradle/java-test-fixtures.gradle" description = 'Spring State Machine Data MongoDB' + dependencies { - compile project(':spring-statemachine-data-common') - compile 'org.springframework.data:spring-data-mongodb' - testCompile project(':spring-statemachine-test') + api project(':spring-statemachine-data-common') + api 'org.springframework.data:spring-data-mongodb' + testImplementation project(':spring-statemachine-test') optional 'org.eclipse.persistence:javax.persistence' - testCompile project(path:':spring-statemachine-data-common', configuration:'testArtifacts') - 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-data-mongodb' - testRuntime 'org.springframework.boot:spring-boot-starter-web' + testImplementation(testFixtures(project(":spring-statemachine-data-common"))) + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testRuntimeOnly 'org.springframework.boot:spring-boot-starter-data-mongodb' + testRuntimeOnly 'org.springframework.boot:spring-boot-starter-web' } } diff --git a/spring-statemachine-data/src/test/java/org/springframework/statemachine/data/AbstractRepositoryTests.java b/spring-statemachine-data/src/testFixtures/java/org/springframework/statemachine/data/AbstractRepositoryTests.java similarity index 100% rename from spring-statemachine-data/src/test/java/org/springframework/statemachine/data/AbstractRepositoryTests.java rename to spring-statemachine-data/src/testFixtures/java/org/springframework/statemachine/data/AbstractRepositoryTests.java diff --git a/spring-statemachine-platform/build.gradle b/spring-statemachine-platform/build.gradle new file mode 100644 index 00000000..90d74ad4 --- /dev/null +++ b/spring-statemachine-platform/build.gradle @@ -0,0 +1,28 @@ +plugins { + id 'java-platform' +} + +javaPlatform { + allowDependencies() +} + +dependencies { + api platform("org.springframework.boot:spring-boot-dependencies:$springBootVersion") + constraints { + api "log4j:log4j:$log4jVersion" + api "org.eclipse.persistence:javax.persistence:$eclipsePersistenceVersion" + api "com.esotericsoftware:kryo-shaded:$kryoVersion" + api "org.springframework.shell:spring-shell:$springShellVersion" + api "org.eclipse.uml2:uml:$eclipseUml2UmlVersion" + api "org.eclipse.uml2:types:$eclipseUml2TypesVersion" + api "org.eclipse.uml2:common:$eclipseUml2CommonVersion" + api "org.eclipse.emf:org.eclipse.emf.ecore.xmi:$eclipseEmfXmiVersion" + api "org.eclipse.emf:org.eclipse.emf.ecore:$eclipseEmfEcoreVersion" + api "org.eclipse.emf:org.eclipse.emf.common:$eclipseEmfCommonVersion" + api "org.apache.curator:curator-recipes:$curatorVersion" + api "org.apache.curator:curator-test:$curatorVersion" + api "org.awaitility:awaitility:$awaitilityVersion" + api "io.projectreactor.tools:blockhound:$reactorBlockHoundVersion" + api "io.projectreactor.tools:blockhound-junit-platform:$reactorBlockHoundVersion" + } +} \ No newline at end of file diff --git a/spring-statemachine-samples/build.gradle b/spring-statemachine-samples/build.gradle index ad8b70b7..49c2e855 100644 --- a/spring-statemachine-samples/build.gradle +++ b/spring-statemachine-samples/build.gradle @@ -2,216 +2,252 @@ description = 'Spring State Machine Samples Common' project('spring-statemachine-samples-turnstile') { description = 'Spring State Machine Turnstile Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-samples-common') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-samples-common') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-turnstilereactive') { description = 'Spring State Machine Turnstile Reactive Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-samples-common') - compile 'org.springframework.boot:spring-boot-starter-webflux' - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' - testCompile 'org.springframework.boot:spring-boot-starter-test' + api project(':spring-statemachine-samples-common') + api 'org.springframework.boot:spring-boot-starter-webflux' + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.springframework.boot:spring-boot-starter-test' } } project('spring-statemachine-samples-showcase') { description = 'Spring State Machine Showcase Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' - compile project(':spring-statemachine-samples-common') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' + api project(':spring-statemachine-samples-common') } } project('spring-statemachine-samples-cdplayer') { description = 'Spring State Machine CD Player Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-samples-common') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-samples-common') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-tasks') { description = 'Spring State Machine Parallel Regions Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-samples-common') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-samples-common') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-washer') { description = 'Spring State Machine History State Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-samples-common') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-samples-common') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-zookeeper') { description = 'Spring State Machine Distributed Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-samples-common') - compile project(':spring-statemachine-zookeeper') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-samples-common') + api project(':spring-statemachine-zookeeper') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-persist') { description = 'Spring State Machine Persist Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-samples-common') - compile project(':spring-statemachine-recipes-common') - compile ('org.hsqldb:hsqldb') - compile ('org.springframework:spring-jdbc') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-samples-common') + api project(':spring-statemachine-recipes-common') + api ('org.hsqldb:hsqldb') + api ('org.springframework:spring-jdbc') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-web') { description = 'Spring State Machine Web Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-cluster') - compile('org.springframework.boot:spring-boot-starter-security') - compile('org.springframework.boot:spring-boot-starter-web') - compile('org.springframework.boot:spring-boot-starter-websocket') - compile('org.springframework:spring-webmvc') - compile('org.springframework:spring-websocket') - compile('org.springframework.security:spring-security-messaging') - compile('org.springframework.session:spring-session-core') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-cluster') + api('org.springframework.boot:spring-boot-starter-security') + api('org.springframework.boot:spring-boot-starter-web') + api('org.springframework.boot:spring-boot-starter-websocket') + api('org.springframework:spring-webmvc') + api('org.springframework:spring-websocket') + api('org.springframework.security:spring-security-messaging') + api('org.springframework.session:spring-session-core') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-scope') { description = 'Spring State Machine Web Scope Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile('org.springframework.boot:spring-boot-starter-web') - compile('org.springframework.boot:spring-boot-starter-thymeleaf') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api('org.springframework.boot:spring-boot-starter-web') + api('org.springframework.boot:spring-boot-starter-thymeleaf') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-security') { description = 'Spring State Machine Web Security Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile('org.springframework.boot:spring-boot-starter-web') - compile('org.springframework.boot:spring-boot-starter-thymeleaf') - compile('org.springframework.boot:spring-boot-starter-security') - compile('org.springframework.security:spring-security-config') - compile('org.springframework.security:spring-security-web') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api('org.springframework.boot:spring-boot-starter-web') + api('org.springframework.boot:spring-boot-starter-thymeleaf') + api('org.springframework.boot:spring-boot-starter-security') + api('org.springframework.security:spring-security-config') + api('org.springframework.security:spring-security-web') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-eventservice') { description = 'Spring State Machine Event Service Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-data-common:spring-statemachine-data-redis') - compile('org.springframework.boot:spring-boot-starter-web') - compile('org.springframework.boot:spring-boot-starter-thymeleaf') - compile('org.apache.commons:commons-pool2') - runtime('redis.clients:jedis') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-data-common:spring-statemachine-data-redis') + api('org.springframework.boot:spring-boot-starter-web') + api('org.springframework.boot:spring-boot-starter-thymeleaf') + api('org.apache.commons:commons-pool2') + implementation('redis.clients:jedis') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-deploy') { description = 'Spring State Machine Deploy Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-uml') - compile('org.springframework.boot:spring-boot-starter-web') - compile('org.springframework.boot:spring-boot-starter-thymeleaf') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-uml') + api('org.springframework.boot:spring-boot-starter-web') + api('org.springframework.boot:spring-boot-starter-thymeleaf') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-ordershipping') { description = 'Spring State Machine Order Shipping Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-uml') - compile('org.springframework.boot:spring-boot-starter-web') - compile('org.springframework.boot:spring-boot-starter-thymeleaf') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-uml') + api('org.springframework.boot:spring-boot-starter-web') + api('org.springframework.boot:spring-boot-starter-thymeleaf') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-datajpa') { description = 'Spring State Machine Data Jpa Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-autoconfigure') - compile project(':spring-statemachine-data-common:spring-statemachine-data-jpa') - compile('org.springframework.boot:spring-boot-starter-web') - compile('org.springframework.boot:spring-boot-starter-thymeleaf') - compile('org.springframework.boot:spring-boot-starter-data-jpa') - compile('org.springframework.boot:spring-boot-devtools') - compile('com.h2database:h2') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-autoconfigure') + api project(':spring-statemachine-data-common:spring-statemachine-data-jpa') + api('org.springframework.boot:spring-boot-starter-web') + api('org.springframework.boot:spring-boot-starter-thymeleaf') + api('org.springframework.boot:spring-boot-starter-data-jpa') + api('org.springframework.boot:spring-boot-devtools') + api('com.h2database:h2') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-datajpamultipersist') { description = 'Spring State Machine Data Jpa Multi Persist Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-autoconfigure') - compile project(':spring-statemachine-data-common:spring-statemachine-data-jpa') - compile('org.springframework.boot:spring-boot-starter-web') - compile('org.springframework.boot:spring-boot-starter-thymeleaf') - compile('org.springframework.boot:spring-boot-starter-data-jpa') - compile('org.springframework.boot:spring-boot-devtools') - compile('com.h2database:h2') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-autoconfigure') + api project(':spring-statemachine-data-common:spring-statemachine-data-jpa') + api('org.springframework.boot:spring-boot-starter-web') + api('org.springframework.boot:spring-boot-starter-thymeleaf') + api('org.springframework.boot:spring-boot-starter-data-jpa') + api('org.springframework.boot:spring-boot-devtools') + api('com.h2database:h2') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-datapersist') { description = 'Spring State Machine Data Persist Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-autoconfigure') - compile project(':spring-statemachine-data-common:spring-statemachine-data-jpa') - compile project(':spring-statemachine-data-common:spring-statemachine-data-redis') - compile project(':spring-statemachine-data-common:spring-statemachine-data-mongodb') - compile('org.springframework.boot:spring-boot-starter-web') - compile('org.springframework.boot:spring-boot-starter-thymeleaf') - compile('org.springframework.boot:spring-boot-starter-data-jpa') - compile('org.springframework.boot:spring-boot-starter-data-redis') - compile('org.springframework.boot:spring-boot-starter-data-mongodb') - compile('org.springframework.boot:spring-boot-devtools') - compile('com.h2database:h2') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-autoconfigure') + api project(':spring-statemachine-data-common:spring-statemachine-data-jpa') + api project(':spring-statemachine-data-common:spring-statemachine-data-redis') + api project(':spring-statemachine-data-common:spring-statemachine-data-mongodb') + api('org.springframework.boot:spring-boot-starter-web') + api('org.springframework.boot:spring-boot-starter-thymeleaf') + api('org.springframework.boot:spring-boot-starter-data-jpa') + api('org.springframework.boot:spring-boot-starter-data-redis') + api('org.springframework.boot:spring-boot-starter-data-mongodb') + api('org.springframework.boot:spring-boot-devtools') + api('com.h2database:h2') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } } project('spring-statemachine-samples-monitoring') { description = 'Spring State Machine Monitoring Sample' + apply from: "$rootDir/gradle/java-test-fixtures.gradle" + dependencies { - compile project(':spring-statemachine-autoconfigure') - compile('org.springframework.boot:spring-boot-starter-actuator') - compile('org.springframework.boot:spring-boot-starter-web') - compile('org.springframework.boot:spring-boot-starter-thymeleaf') - testCompile('com.jayway.jsonpath:json-path') - testCompile('com.jayway.jsonpath:json-path-assert') - testCompile project(path:':spring-statemachine-core', configuration:'testArtifacts') - testCompile 'io.projectreactor:reactor-test' + api project(':spring-statemachine-autoconfigure') + api('org.springframework.boot:spring-boot-starter-actuator') + api('org.springframework.boot:spring-boot-starter-web') + api('org.springframework.boot:spring-boot-starter-thymeleaf') + testImplementation('com.jayway.jsonpath:json-path') + testImplementation('com.jayway.jsonpath:json-path-assert') + testImplementation(testFixtures(project(":spring-statemachine-core"))) + testImplementation 'io.projectreactor:reactor-test' } }