From fa53dde01eef29e7b74c729715ee7975df128b1f Mon Sep 17 00:00:00 2001 From: Mahmoud Ben Hassine Date: Mon, 7 Dec 2020 16:44:03 +0100 Subject: [PATCH] Update build to use Maven instead of Gradle --- .gitignore | 1 - build.gradle | 869 ------------------ build.properties | 15 - .../build/gradle/MergePlugin.groovy | 159 ---- .../META-INF/gradle-plugins/merge.properties | 1 - gradle.properties | 1 - gradle/wrapper/gradle-wrapper.jar | Bin 58694 -> 0 bytes gradle/wrapper/gradle-wrapper.properties | 5 - gradlew | 183 ---- gradlew.bat | 103 --- pom.xml | 266 ++++++ publish-maven.gradle | 95 -- settings.gradle | 10 - spring-batch-core/pom.xml | 207 +++++ spring-batch-infrastructure/pom.xml | 342 +++++++ spring-batch-integration/pom.xml | 138 +++ spring-batch-samples/pom.xml | 239 +++++ spring-batch-test/pom.xml | 90 ++ 18 files changed, 1282 insertions(+), 1442 deletions(-) delete mode 100644 build.gradle delete mode 100644 build.properties delete mode 100644 buildSrc/src/main/groovy/org/springframework/build/gradle/MergePlugin.groovy delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/merge.properties delete mode 100644 gradle.properties delete mode 100644 gradle/wrapper/gradle-wrapper.jar delete mode 100644 gradle/wrapper/gradle-wrapper.properties delete mode 100755 gradlew delete mode 100755 gradlew.bat create mode 100644 pom.xml delete mode 100644 publish-maven.gradle delete mode 100644 settings.gradle create mode 100644 spring-batch-core/pom.xml create mode 100644 spring-batch-infrastructure/pom.xml create mode 100644 spring-batch-integration/pom.xml create mode 100644 spring-batch-samples/pom.xml create mode 100644 spring-batch-test/pom.xml diff --git a/.gitignore b/.gitignore index 97b1d8a06..fcbd8de60 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,6 @@ s3.properties .springBeans build .gradle -pom.xml out /.gradletasknamecache diff --git a/build.gradle b/build.gradle deleted file mode 100644 index e718beb95..000000000 --- a/build.gradle +++ /dev/null @@ -1,869 +0,0 @@ -//description = 'Spring Batch' - -//apply plugin: 'base' - -buildscript { - repositories { - mavenCentral() - maven { url 'https://plugins.gradle.org/m2/' } - maven { url 'https://repo.spring.io/plugins-release' } - } - dependencies { - classpath 'org.springframework.build.gradle:propdeps-plugin:0.0.7' - classpath 'io.spring.gradle:spring-io-plugin:0.0.5.RELEASE' - classpath "io.spring.gradle:dependency-management-plugin:0.6.0.RELEASE" - classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.0" - } -} - -plugins { - id 'org.sonarqube' version '3.0' - id 'org.asciidoctor.jvm.pdf' version '3.1.0' - id 'org.asciidoctor.jvm.gems' version '3.1.0' - id 'org.asciidoctor.jvm.convert' version '3.1.0' -} - -ext { - linkHomepage = 'https://projects.spring.io/spring-batch/' - linkCi = 'https://build.spring.io/browse/BATCH' - linkIssue = 'https://github.com/spring-projects/spring-batch/issues' - linkScmUrl = 'https://github.com/spring-projects/spring-batch' - linkScmConnection = 'git://github.com/spring-projects/spring-batch.git' - linkScmDevConnection = 'git@github.com:spring-projects/spring-batch.git' - - mainProjects = subprojects.findAll { !it.name.endsWith('tests') && !it.name.endsWith('samples') && it.name.startsWith('spring-batch-')} -} - -allprojects { - group = 'org.springframework.batch' - - repositories { - mavenCentral() - maven { url 'https://repo.spring.io/libs-snapshot' } - maven { url 'https://repo.spring.io/libs-milestone' } - maven { url 'https://repo.spring.io/plugins-release' } - } - - ext { - - environmentProperty = project.hasProperty('environment') ? getProperty('environment') : 'hsql' - - springVersionDefault = '5.3.0' - springVersion = project.hasProperty('springVersion') ? getProperty('springVersion') : springVersionDefault - springRetryVersion = '1.3.0' - springAmqpVersion = '2.3.0' - springDataCommonsVersion = '2.4.0' - springDataGeodeVersion = '2.4.0' - springDataJpaVersion = '2.4.0' - springDataMongodbVersion = '3.1.0' - springIntegrationVersion = '5.4.0' - springKafkaVersion = '2.6.2' - springLdapVersion = '2.3.3.RELEASE' - - activemqVersion = '5.15.13' - apacheAvroVersion ='1.9.2' - aspectjVersion = '1.9.6' - commonsDdbcpVersion = '2.8.0' - commonsIoVersion = '2.8.0' - commonsLangVersion = '3.11' - commonsPoolVersion = '1.6' - derbyVersion = '10.14.2.0' - groovyVersion = '2.5.13' - hamcrestVersion = '2.2' - h2databaseVersion = '1.4.200' - hibernateVersion = '5.4.22.Final' - hibernateValidatorVersion = '6.1.6.Final' - javaxElVersion = '3.0.0' - hsqldbVersion = '2.5.1' - jackson2Version = '2.11.3' - gsonVersion = '2.8.6' - javaMailVersion = '1.6.2' - javaxBatchApiVersion = '1.0' - javaxAnnotationApiVersion = '1.3.2' - javaxInjectVersion = '1' - javaxTransactionVersion = '1.3' - jbatchTckSpi = '1.0' - jettisonVersion = '1.2' //? => upgrade to 1.4 and the build fails (deprecated anyway via xstream) - jmsVersion = '2.0.1' - junitVersion = '4.13.1' - junitJupiterVersion = '5.7.0' - log4jVersion = '2.13.3' - mysqlVersion = '8.0.22' - mockitoVersion = '3.6.0' - postgresqlVersion = '42.2.18' - quartzVersion = '2.3.2' - servletApiVersion = '4.0.1' - sqlfireclientVersion = '1.0.3' - sqliteVersion = '3.32.3.2' - woodstoxVersion = '6.2.3' - xmlunitVersion = '2.7.0' - xstreamVersion = '1.4.12' - jrubyVersion = '1.7.27' - beanshellVersion = '2.0b5' - jaxbApiVersion = '2.3.1' - jaxbImplVersion = '2.3.0.1' - micrometerVersion = '1.5.6' - prometheusPushgatewayVersion = '0.9.0' - docResourcesVersion = '0.2.2.RELEASE' - assertjVersion='3.18.0' - mongoDbDriverSyncVersion='4.1.1' - testcontainersVersion='1.14.3' - neo4jVersion='3.2.17' - } - - apply plugin: 'idea' -} - -configure(subprojects - project(":spring-build-src")) { subproject -> - - apply plugin: 'java' - apply from: "${rootProject.projectDir}/publish-maven.gradle" - apply plugin: 'jacoco' - apply plugin: 'propdeps-idea' - apply plugin: 'propdeps-eclipse' - apply plugin: 'merge' - - jacoco { - toolVersion = "0.8.5" - } - - compileJava { - sourceCompatibility=1.8 - targetCompatibility=1.8 - options.encoding='UTF-8' - } - - compileTestJava { - sourceCompatibility=1.8 - targetCompatibility=1.8 - options.encoding='UTF-8' - } - - eclipse { - project { - natures += 'org.springframework.ide.eclipse.core.springnature' - } - } - - sourceSets { - test { - resources { - srcDirs = ['src/test/resources', 'src/test/java'] - } - } - } - - // enable all compiler warnings; individual projects may customize further - ext.xLintArg = '-Xlint:all' - [compileJava, compileTestJava]*.options*.compilerArgs = [xLintArg] + '-proc:none' - - tasks.withType(Test).all { - // suppress all console output during testing unless running `gradle -i` - logging.captureStandardOutput(LogLevel.INFO) - systemProperty "ENVIRONMENT", environmentProperty - - jacoco { - destinationFile = file("$buildDir/jacoco.exec") - } - - include '**/*Tests.class' - exclude '**/Abstract*.class' - } - - test { - jacoco { - destinationFile = file("$buildDir/jacoco.exec") - } - -// testLogging { -// showStandardStreams = true -// } - } - - task sourcesJar(type: Jar) { - classifier = 'sources' - from sourceSets.main.allJava - } - - task javadocJar(type: Jar) { - classifier = 'javadoc' - from javadoc - } - - task checkTestConfigs { - doLast { - def configFiles = [] - sourceSets.test.java.srcDirs.each { - fileTree(it).include('**/*.xml').exclude('**/log4j.xml').each { configFile -> - def configXml = new XmlParser(false, false).parse(configFile) - - if (configXml.@'xsi:schemaLocation' ==~ /.*spring-[a-z-]*\d\.\d\.xsd.*/) { - configFiles << configFile - } - } - } - if (configFiles) { - throw new InvalidUserDataException('Hardcoded XSD version in the config files:\n' + - configFiles.collect { relativePath(it) }.join('\n') + - '\nPlease, use versionless schemaLocations for Spring XSDs to avoid issues with builds on different versions of dependencies.') - } - } - } - - jar { - manifest.attributes["Created-By"] = - "${System.getProperty("java.version")} (${System.getProperty("java.specification.vendor")})" - 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) - } - } - - test.dependsOn checkTestConfigs - - artifacts { - archives sourcesJar - archives javadocJar - } - - configurations.all { - resolutionStrategy { - eachDependency { DependencyResolveDetails details -> - if (details.requested.group == 'org.springframework') { - details.useVersion springVersion - } - } - } - } -} - -subprojects { - task allDeps(type: DependencyReportTask) {} -} - -configure(mainProjects) { - if (project.hasProperty('platformVersion')) { - apply plugin: 'spring-io' - - repositories { - maven { url "https://repo.spring.io/libs-snapshot" } - } - - dependencyManagement { - springIoTestRuntime { - imports { - mavenBom "io.spring.platform:platform-bom:${platformVersion}" - } - } - } - } -} - -project("spring-build-src") { - description = "Exposes gradle buildSrc for IDE support" - apply plugin: "groovy" - - dependencies { - compile gradleApi() - compile localGroovy() - } - - configurations.archives.artifacts.clear() -} - -project('spring-batch-core') { - description = 'Spring Batch Core' - - dependencies { - compile project(":spring-batch-infrastructure") - - compile "com.fasterxml.jackson.core:jackson-databind:${jackson2Version}" - compile ("org.codehaus.jettison:jettison:$jettisonVersion") { - exclude group: 'stax', module: 'stax-api' - } - compile "org.springframework:spring-aop:$springVersion" - compile "org.springframework:spring-beans:$springVersion" - compile "org.springframework:spring-context:$springVersion" - compile "org.springframework:spring-core:$springVersion" - compile "org.springframework:spring-tx:$springVersion" - compile "javax.batch:javax.batch-api:$javaxBatchApiVersion" - compile "io.micrometer:micrometer-core:$micrometerVersion" - - testCompile "org.springframework:spring-test:$springVersion" - testCompile "org.mockito:mockito-core:$mockitoVersion" - testCompile "javax.inject:javax.inject:$javaxInjectVersion" - testCompile "org.hsqldb:hsqldb:$hsqldbVersion" - testCompile "com.h2database:h2:$h2databaseVersion" - testCompile "org.apache.derby:derby:$derbyVersion" - testCompile "commons-io:commons-io:$commonsIoVersion" - testCompile "org.apache.commons:commons-dbcp2:$commonsDdbcpVersion" - testCompile "junit:junit:${junitVersion}" - testCompile "org.hamcrest:hamcrest-library:$hamcrestVersion" - testCompile "org.testcontainers:mysql:$testcontainersVersion" - testCompile "mysql:mysql-connector-java:$mysqlVersion" - - optional "com.ibm.jbatch:com.ibm.jbatch-tck-spi:$jbatchTckSpi" - optional "com.thoughtworks.xstream:xstream:$xstreamVersion" - optional "org.aspectj:aspectjrt:$aspectjVersion" - optional "org.aspectj:aspectjweaver:$aspectjVersion" - optional "org.springframework:spring-jdbc:$springVersion" - optional "org.apache.logging.log4j:log4j-api:$log4jVersion" - optional "org.apache.logging.log4j:log4j-core:$log4jVersion" - optional "javax.annotation:javax.annotation-api:$javaxAnnotationApiVersion" - // JSR-305 only used for non-required meta-annotations - compileOnly("com.google.code.findbugs:jsr305:3.0.2") - testCompileOnly("com.google.code.findbugs:jsr305:3.0.2") - } -} - -project('spring-batch-infrastructure') { - description = 'Spring Batch Infrastructure' - - dependencies { - - compile "org.springframework:spring-core:$springVersion" - compile "org.springframework.retry:spring-retry:$springRetryVersion" - - testCompile "org.apache.logging.log4j:log4j-api:$log4jVersion" - testCompile "org.apache.logging.log4j:log4j-core:$log4jVersion" - testCompile "commons-io:commons-io:$commonsIoVersion" - testCompile "org.apache.commons:commons-dbcp2:$commonsDdbcpVersion" - testCompile "org.hsqldb:hsqldb:$hsqldbVersion" - testCompile "com.h2database:h2:$h2databaseVersion" - testCompile "org.apache.derby:derby:$derbyVersion" - testCompile "org.springframework:spring-test:$springVersion" - testCompile "junit:junit:${junitVersion}" - testCompile "org.hamcrest:hamcrest-library:$hamcrestVersion" - testCompile "org.aspectj:aspectjrt:$aspectjVersion" - testCompile "org.aspectj:aspectjweaver:$aspectjVersion" - testCompile "org.mockito:mockito-core:$mockitoVersion" - testCompile "org.xerial:sqlite-jdbc:$sqliteVersion" - testCompile "javax.xml.bind:jaxb-api:$jaxbApiVersion" - testCompile "org.springframework.kafka:spring-kafka-test:$springKafkaVersion" - testCompile "org.assertj:assertj-core:$assertjVersion" - testCompile "org.xmlunit:xmlunit-core:$xmlunitVersion" - testCompile "org.xmlunit:xmlunit-matchers:$xmlunitVersion" - testCompile "com.thoughtworks.xstream:xstream:$xstreamVersion" - testCompile "org.apache.activemq:activemq-broker:$activemqVersion" - testCompile "org.apache.activemq:activemq-kahadb-store:$activemqVersion" - testCompile "org.springframework.data:spring-data-jpa:$springDataJpaVersion" - - testRuntime "com.sun.mail:javax.mail:$javaMailVersion" - testRuntime "org.codehaus.groovy:groovy-jsr223:$groovyVersion" - testRuntime "org.jruby:jruby:$jrubyVersion" - testRuntime "org.hibernate.validator:hibernate-validator:$hibernateValidatorVersion" - testRuntime "org.glassfish:javax.el:$javaxElVersion" - testRuntime "org.beanshell:bsh:$beanshellVersion" - testRuntime "com.sun.xml.bind:jaxb-core:$jaxbImplVersion" - testRuntime "com.sun.xml.bind:jaxb-impl:$jaxbImplVersion" - testRuntime "org.mongodb:mongodb-driver-sync:$mongoDbDriverSyncVersion" - - optional "javax.jms:javax.jms-api:$jmsVersion" - optional "com.fasterxml.jackson.core:jackson-databind:${jackson2Version}" - optional "com.google.code.gson:gson:${gsonVersion}" - compile("org.hibernate:hibernate-core:$hibernateVersion") { dep -> - optional dep - exclude group: 'org.jboss.spec.javax.transaction', module: 'jboss-transaction-api_1.1_spec' - } - compile("org.hibernate:hibernate-entitymanager:$hibernateVersion") { dep -> - optional dep - exclude group: 'org.jboss.spec.javax.transaction', module: 'jboss-transaction-api_1.1_spec' - } - optional "org.hibernate.validator:hibernate-validator:$hibernateValidatorVersion" - optional "javax.transaction:javax.transaction-api:$javaxTransactionVersion" - optional "javax.mail:javax.mail-api:$javaMailVersion" - optional "javax.batch:javax.batch-api:$javaxBatchApiVersion" - compile("org.springframework:spring-oxm:$springVersion") { dep -> - optional dep - exclude group: 'commons-lang', module: 'commons-lang' - } - optional "org.springframework:spring-aop:$springVersion" - optional "org.springframework:spring-context:$springVersion" - compile("org.springframework:spring-context-support:$springVersion") { dep -> - optional dep - } - optional "org.springframework:spring-jdbc:$springVersion" - optional "org.springframework:spring-jms:$springVersion" - optional "org.springframework:spring-orm:$springVersion" - optional "org.springframework:spring-tx:$springVersion" - optional "org.springframework.data:spring-data-commons:$springDataCommonsVersion" - optional "org.springframework.data:spring-data-mongodb:$springDataMongodbVersion" - optional "org.springframework.data:spring-data-geode:$springDataGeodeVersion" - optional "org.neo4j:neo4j-ogm-core:$neo4jVersion" - compile("com.fasterxml.woodstox:woodstox-core:$woodstoxVersion") { dep -> - optional dep - exclude group: 'stax', module: 'stax-api' - } - optional "org.springframework.amqp:spring-amqp:$springAmqpVersion" - optional ("org.springframework.amqp:spring-rabbit:$springAmqpVersion") { - exclude group: "org.springframework", module: "spring-messaging" - exclude group: "org.springframework", module: "spring-web" - } - optional "org.springframework.ldap:spring-ldap-core:$springLdapVersion" - optional "org.springframework.ldap:spring-ldap-core-tiger:$springLdapVersion" - optional "org.springframework.ldap:spring-ldap-ldif-core:$springLdapVersion" - optional "org.springframework.kafka:spring-kafka:$springKafkaVersion" - optional "org.apache.avro:avro:$apacheAvroVersion" - - // JSR-305 only used for non-required meta-annotations - compileOnly("com.google.code.findbugs:jsr305:3.0.2") - testCompileOnly("com.google.code.findbugs:jsr305:3.0.2") - } - -} - -//Domain for batch job testing -project('spring-batch-test') { - description = 'Spring Batch Test' - - dependencies { - compile project(":spring-batch-core") - - compile "junit:junit:${junitVersion}" - compile "org.springframework:spring-test:$springVersion" - compile "org.springframework:spring-jdbc:$springVersion" - - testCompile "org.hamcrest:hamcrest-library:$hamcrestVersion" - testCompile "org.apache.commons:commons-dbcp2:$commonsDdbcpVersion" - testCompile "org.hsqldb:hsqldb:$hsqldbVersion" - testCompile "org.mockito:mockito-core:$mockitoVersion" - - testRuntime "org.junit.jupiter:junit-jupiter-engine:$junitJupiterVersion" - - optional "org.aspectj:aspectjrt:$aspectjVersion" - optional "javax.batch:javax.batch-api:$javaxBatchApiVersion" - optional "org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion" - } -} - -project('spring-batch-integration') { - description = 'Batch Integration' - - dependencies { - compile project(":spring-batch-core") - - compile "org.springframework.retry:spring-retry:$springRetryVersion" - compile "org.springframework:spring-context:$springVersion" - compile "org.springframework:spring-messaging:$springVersion" - compile "org.springframework:spring-aop:$springVersion" - compile "org.springframework.integration:spring-integration-core:$springIntegrationVersion" - compile "org.springframework:spring-tx:$springVersion" - - testCompile project(":spring-batch-test") - - testCompile "org.apache.activemq:activemq-broker:$activemqVersion" - testCompile "org.apache.activemq:activemq-kahadb-store:$activemqVersion" - testCompile "junit:junit:${junitVersion}" - testCompile "org.hamcrest:hamcrest-library:$hamcrestVersion" - testCompile "org.aspectj:aspectjrt:$aspectjVersion" - testCompile "org.aspectj:aspectjweaver:$aspectjVersion" - testCompile "org.apache.commons:commons-dbcp2:$commonsDdbcpVersion" - testCompile "com.h2database:h2:$h2databaseVersion" - testCompile "mysql:mysql-connector-java:$mysqlVersion" - testCompile "org.apache.derby:derby:$derbyVersion" - testCompile "org.hsqldb:hsqldb:$hsqldbVersion" - testCompile "org.springframework:spring-test:$springVersion" - testCompile "org.mockito:mockito-core:$mockitoVersion" - testCompile("org.springframework.integration:spring-integration-test:$springIntegrationVersion") { - exclude group: 'junit', module: 'junit-dep' - exclude group:'org.hamcrest', module:'hamcrest-all' - } - testCompile "org.springframework.integration:spring-integration-jdbc:$springIntegrationVersion" - - optional "javax.jms:javax.jms-api:$jmsVersion" - optional "org.apache.logging.log4j:log4j-api:$log4jVersion" - optional "org.apache.logging.log4j:log4j-core:$log4jVersion" - optional "org.springframework.integration:spring-integration-jms:$springIntegrationVersion" - optional "org.springframework:spring-jms:$springVersion" - - optional "javax.batch:javax.batch-api:$javaxBatchApiVersion" - - // JSR-305 only used for non-required meta-annotations - compileOnly("com.google.code.findbugs:jsr305:3.0.2") - } -} - -project('spring-batch-samples') { - description = 'Batch Batch Samples' - project.tasks.findByPath("artifactoryPublish")?.enabled = false - - dependencies { - - compile project(":spring-batch-integration") - compile "org.aspectj:aspectjrt:$aspectjVersion" - compile "org.aspectj:aspectjweaver:$aspectjVersion" - compile "org.quartz-scheduler:quartz:$quartzVersion" - compile "commons-io:commons-io:$commonsIoVersion" - compile "org.apache.commons:commons-dbcp2:$commonsDdbcpVersion" - compile "com.thoughtworks.xstream:xstream:$xstreamVersion" - compile("com.fasterxml.woodstox:woodstox-core:$woodstoxVersion") { - exclude group: 'stax', module: 'stax-api' - } - compile("org.hibernate:hibernate-core:$hibernateVersion") { dep -> - optional dep - exclude group: 'org.jboss.spec.javax.transaction', module: 'jboss-transaction-api_1.1_spec' - } - compile("org.hibernate:hibernate-entitymanager:$hibernateVersion") { dep -> - optional dep - exclude group: 'org.jboss.spec.javax.transaction', module: 'jboss-transaction-api_1.1_spec' - } - compile "javax.transaction:javax.transaction-api:$javaxTransactionVersion" - compile "org.springframework:spring-aop:$springVersion" - compile("org.springframework:spring-oxm:$springVersion") { - exclude group: 'commons-lang', module: 'commons-lang' - } - compile "org.springframework:spring-core:$springVersion" - compile "org.springframework:spring-context-support:$springVersion" - compile "org.springframework:spring-jdbc:$springVersion" - compile "org.springframework:spring-orm:$springVersion" - compile "org.springframework:spring-tx:$springVersion" - compile "org.springframework.data:spring-data-jpa:$springDataJpaVersion" - compile "javax.mail:javax.mail-api:$javaMailVersion" - compile "org.apache.activemq:activemq-client:$activemqVersion" - compile "org.apache.activemq:activemq-broker:$activemqVersion" - compile "io.micrometer:micrometer-registry-prometheus:$micrometerVersion" - compile "io.prometheus:simpleclient_pushgateway:$prometheusPushgatewayVersion" - compile "org.mongodb:mongodb-driver-sync:$mongoDbDriverSyncVersion" - - testCompile "org.xmlunit:xmlunit-core:$xmlunitVersion" - testCompile "org.xmlunit:xmlunit-matchers:$xmlunitVersion" - testCompile project(":spring-batch-test") - testCompile "junit:junit:${junitVersion}" - testCompile "org.hamcrest:hamcrest-library:$hamcrestVersion" - testCompile "org.hsqldb:hsqldb:$hsqldbVersion" - testCompile "org.apache.logging.log4j:log4j-api:$log4jVersion" - testCompile "org.apache.logging.log4j:log4j-core:$log4jVersion" - testCompile "org.codehaus.groovy:groovy:$groovyVersion" - testCompile "org.codehaus.groovy:groovy-ant:$groovyVersion" - testCompile "org.springframework:spring-test:$springVersion" - testCompile "org.mockito:mockito-core:$mockitoVersion" - testCompile "org.apache.activemq:activemq-kahadb-store:$activemqVersion" - - testRuntime "com.sun.mail:javax.mail:$javaMailVersion" - testRuntime "org.hibernate.validator:hibernate-validator:$hibernateValidatorVersion" - testRuntime "org.glassfish:javax.el:$javaxElVersion" - testRuntime "javax.xml.bind:jaxb-api:$jaxbApiVersion" - testRuntime "com.sun.xml.bind:jaxb-core:$jaxbImplVersion" - testRuntime "com.sun.xml.bind:jaxb-impl:$jaxbImplVersion" - - provided "mysql:mysql-connector-java:$mysqlVersion" - provided "com.h2database:h2:$h2databaseVersion" - provided "javax.servlet:javax.servlet-api:$servletApiVersion" - - optional "com.vmware.sqlfire:sqlfireclient:$sqlfireclientVersion" - optional "org.apache.derby:derby:$derbyVersion" - optional "org.postgresql:postgresql:$postgresqlVersion" - optional "org.springframework:spring-web:$springVersion" - optional "org.springframework.data:spring-data-commons:$springDataCommonsVersion" - optional "org.springframework.data:spring-data-mongodb:$springDataMongodbVersion" - optional "org.springframework.amqp:spring-amqp:$springAmqpVersion" - optional ("org.springframework.amqp:spring-rabbit:$springAmqpVersion") { - exclude group: "org.springframework", module: "spring-messaging" - exclude group: "org.springframework", module: "spring-web" - } - optional "javax.inject:javax.inject:1" - - optional "javax.batch:javax.batch-api:$javaxBatchApiVersion" - } -} - -configurations { - docs -} - -dependencies { - docs "io.spring.docresources:spring-doc-resources:${docResourcesVersion}@zip" -} - -task prepareAsciidocBuild(type: Sync) { - dependsOn configurations.docs - // copy doc resources - from { - configurations.docs.collect { zipTree(it) } - } - // and doc sources - from "src/asciidoc/" - // to a build directory of your choice - into "$buildDir/asciidoc/assemble" -} - -asciidoctorPdf { - dependsOn prepareAsciidocBuild - baseDirFollowsSourceFile() - - asciidoctorj { - sourceDir "$buildDir/asciidoc/assemble" - inputs.dir(sourceDir) - sources { - include 'index-single.adoc' - } - options doctype: 'book' - logDocuments = true - attributes 'icons': 'font', - 'sectanchors': '', - 'sectnums': '', - 'toc': '', - 'source-highlighter' : 'coderay', - revnumber: project.version, - 'project-version': project.version - } -} - -asciidoctor { - dependsOn asciidoctorPdf - baseDirFollowsSourceFile() - sourceDir "$buildDir/asciidoc/assemble" - resources { - from(sourceDir) { - include 'images/*', 'css/**', 'js/**' - } - } - options doctype: 'book', eruby: 'erubis' - logDocuments = true - attributes 'docinfo': 'shared', - // 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': 'github', - 'idprefix': '', - 'idseparator': '-', - 'spring-version': project.version, - 'allow-uri-read': '', - revnumber: project.version -} - - -apply plugin: 'org.sonarqube' - -sonarqube { - properties { - property "sonar.projectName", "Spring Batch" - property "sonar.jacoco.reportPath", "${buildDir.name}/jacoco.exec" - property "sonar.links.homepage", linkHomepage - property "sonar.links.ci", linkCi - property "sonar.links.issue", linkIssue - property "sonar.links.scm", linkScmUrl - property "sonar.links.scm_dev", linkScmDevConnection - property "sonar.java.coveragePlugin", "jacoco" - } -} - -task api(type: Javadoc) { - group = 'Documentation' - description = 'Generates aggregated Javadoc API documentation.' - title = "Spring Batch ${version} API" - options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED - options.author = true - options.header = 'Spring Batch' - options.overview = 'src/api/overview.html' - if (JavaVersion.current().isJava8Compatible()) { - options.addStringOption('Xdoclint:none', '-quiet') - } - - source subprojects - .findAll { it.name != 'spring-batch-samples' && !it.name.endsWith("-tests") } - .collect { project -> project.sourceSets.main.allJava } - destinationDir = new File(buildDir, "api") - classpath = files(subprojects.collect { project -> - project.sourceSets.main.compileClasspath - }) -} - -task schemaZip(type: Zip) { - group = 'Distribution' - classifier = 'schema' - description = "Builds -${classifier} archive containing all " + - "XSDs for deployment at static.springframework.org/schema." - - subprojects.each { subproject -> - def Properties schemas = new Properties(); - def shortName = subproject.name.replaceFirst("${rootProject.name}-", '') - if (subproject.name.endsWith("-core")) { - shortName = '' - } - - subproject.sourceSets.main.resources.find { - it.path.endsWith("META-INF${File.separator}spring.schemas") - }?.withInputStream { schemas.load(it) } - - for (def key : schemas.keySet()) { - File xsdFile = subproject.sourceSets.main.resources.find { - it.path.replaceAll('\\\\', '/').endsWith(schemas.get(key)) - } - assert xsdFile != null - into ("batch/${shortName}") { - from xsdFile.path - } - } - } -} - -task docsZip(type: Zip) { - group = 'Distribution' - classifier = 'docs' - description = "Builds -${classifier} archive containing api and reference " + - "for deployment at static.springframework.org/spring-batch/reference." - - from('src/dist') { - include 'changelog.txt' - } - - from (api) { - into 'api' - } - - from (asciidoctorPdf) { - include "index-single.pdf" - rename 'index-single.pdf', 'spring-batch-reference.pdf' - into 'reference/pdf' - } - - from (asciidoctor) { - include "*.html" - include "css/**" - include "js/**" - include "images/**" - into 'reference/html' - } -} - -task distZip(type: Zip, dependsOn: [docsZip, schemaZip]) { - 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" - } - - from(zipTree(schemaZip.archivePath)) { - into "${baseDir}/schema" - } - - [project(':spring-batch-core'), project(':spring-batch-infrastructure'), project(':spring-batch-test'), project(':spring-batch-integration')].each { subproject -> - into ("${baseDir}/libs") { - from subproject.jar - from subproject.sourcesJar - from subproject.javadocJar - } - } -} - -// Create an optional "with dependencies" distribution. -// Not published by default; only for use when building from source. -task depsZip(type: Zip, dependsOn: distZip) { zipTask -> - group = 'Distribution' - classifier = 'dist-with-deps' - description = "Builds -${classifier} archive, containing everything " + - "in the -${distZip.classifier} archive plus all dependencies." - - from zipTree(distZip.archivePath) - - gradle.taskGraph.whenReady { taskGraph -> - if (taskGraph.hasTask(":${zipTask.name}")) { - def projectNames = rootProject.subprojects*.name - def artifacts = new HashSet() - subprojects.each { subproject -> - subproject.configurations.runtime.resolvedConfiguration.resolvedArtifacts.each { artifact -> - def dependency = artifact.moduleVersion.id - if (!projectNames.contains(dependency.name)) { - artifacts << artifact.file - } - } - } - - zipTask.from(artifacts) { - into "${distZip.baseDir}/deps" - } - } - } -} - -artifacts { - archives distZip - archives docsZip - archives schemaZip -} - -task dist(dependsOn: assemble) { - group = 'Distribution' - description = 'Builds -dist, -docs and -schema distribution archives.' -} - -task runTck(dependsOn: subprojects.compileJava) { - - configurations { - tck { - transitive = true - } - antcp { - transitive = true - exclude module: 'ant' - } - } - - dependencies { - tck project(":spring-batch-core") - - tck "commons-pool:commons-pool:$commonsPoolVersion" - tck "javax.batch:javax.batch-api:$javaxBatchApiVersion" - tck "org.springframework:spring-core:$springVersion" - tck "org.springframework:spring-context:$springVersion" - tck "org.springframework:spring-beans:$springVersion" - tck 'commons-logging:commons-logging-api:1.1' - tck "org.springframework:spring-aop:$springVersion" - tck "org.springframework:spring-tx:$springVersion" - tck "org.springframework.retry:spring-retry:$springRetryVersion" - tck "org.hsqldb:hsqldb:$hsqldbVersion" - tck "org.springframework:spring-jdbc:$springVersion" - tck "com.thoughtworks.xstream:xstream:$xstreamVersion" - tck "org.codehaus.jettison:jettison:$jettisonVersion" - tck "org.apache.commons:commons-dbcp2:$commonsDdbcpVersion" - tck "org.apache.derby:derby:$derbyVersion" - - antcp "ant-contrib:ant-contrib:1.0b3" - } - - doLast { - logger.info('tck dependencies: ' + configurations.tck.asPath) - def tckHome = project.hasProperty('TCK_HOME') ? getProperty('TCK_HOME') : System.getenv("JSR_352_TCK_HOME") - - assert tckHome : '''\ -tckHome is not set. Please set either the environment variable 'JSR_352_TCK_HOME' -or specify the Gradle property `TCK_HOME`, e.g: ./gradlew runTck -PTCK_HOME=/path/to/tck''' - - println "Using the JSR 352 TCK at: '$tckHome'" - - ant.taskdef resource: "net/sf/antcontrib/antcontrib.properties", - classpath: configurations.antcp.asPath - ant.properties['batch.impl.classes'] = configurations.tck.asPath - ant.ant antfile: "$tckHome/build.xml", target: "run", dir: "$tckHome" - } -} - -wrapper { - description = 'Generates gradlew[.bat] scripts' - gradleVersion = '6.7' -} diff --git a/build.properties b/build.properties deleted file mode 100644 index 76fddd274..000000000 --- a/build.properties +++ /dev/null @@ -1,15 +0,0 @@ -version=2.2.0 -integration.repo.dir=${basedir}/../integration-repo -ivy.cache.dir=${basedir}/../ivy-cache - -# For when releasing -#release.type=release -#build.stamp=RELEASE - -# For when releasing milestones -#release.type=milestone -#build.stamp=M1 - -# For development in trunk (the default) -#release.type=integration - diff --git a/buildSrc/src/main/groovy/org/springframework/build/gradle/MergePlugin.groovy b/buildSrc/src/main/groovy/org/springframework/build/gradle/MergePlugin.groovy deleted file mode 100644 index 1933dd0fb..000000000 --- a/buildSrc/src/main/groovy/org/springframework/build/gradle/MergePlugin.groovy +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2002-2015 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. - */ - -package org.springframework.build.gradle - -import org.gradle.api.Project -import org.gradle.api.Action -import org.gradle.api.Plugin -import org.gradle.api.invocation.Gradle -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.ProjectDependency -import org.gradle.api.artifacts.maven.Conf2ScopeMapping -import org.gradle.api.plugins.MavenPlugin -import org.gradle.plugins.ide.eclipse.EclipsePlugin -import org.gradle.plugins.ide.idea.IdeaPlugin -/** - * Gradle plugin that allows projects to merged together. Primarily developed to - * allow Spring to support multiple incompatible versions of third-party - * dependencies (for example Hibernate v3 and v4). - *

- * The 'merge' extension should be used to define how projects are merged, for example: - *

- * configure(subprojects) {
- *     apply plugin: MergePlugin
- * }
- *
- * project("myproject") {
- * }
- *
- * project("myproject-extra") {
- *     merge.into = project("myproject")
- * }
- * 
- *

- * This plugin adds two new configurations: - *