160 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Groovy
		
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Groovy
		
	
	
	
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
 | 
						|
import org.springframework.build.shadow.ShadowSource
 | 
						|
 | 
						|
plugins {
 | 
						|
	id 'me.champeau.mrjar'
 | 
						|
}
 | 
						|
 | 
						|
description = "Spring Core"
 | 
						|
 | 
						|
apply plugin: "kotlin"
 | 
						|
apply plugin: "kotlinx-serialization"
 | 
						|
 | 
						|
multiRelease {
 | 
						|
	targetVersions 17, 21
 | 
						|
}
 | 
						|
 | 
						|
def javapoetVersion = "1.13.0"
 | 
						|
def objenesisVersion = "3.3"
 | 
						|
 | 
						|
configurations {
 | 
						|
	java21Api.extendsFrom(api)
 | 
						|
	java21Implementation.extendsFrom(implementation)
 | 
						|
	javapoet
 | 
						|
	objenesis
 | 
						|
	graalvm
 | 
						|
}
 | 
						|
 | 
						|
task javapoetRepackJar(type: ShadowJar) {
 | 
						|
	archiveBaseName = 'spring-javapoet-repack'
 | 
						|
	archiveVersion = javapoetVersion
 | 
						|
	configurations = [project.configurations.javapoet]
 | 
						|
	relocate('com.squareup.javapoet', 'org.springframework.javapoet')
 | 
						|
}
 | 
						|
 | 
						|
task javapoetSource(type: ShadowSource) {
 | 
						|
	configurations = [project.configurations.javapoet]
 | 
						|
	relocate('com.squareup.javapoet', 'org.springframework.javapoet')
 | 
						|
	outputDirectory = file("build/shadow-source/javapoet")
 | 
						|
}
 | 
						|
 | 
						|
task javapoetSourceJar(type: Jar) {
 | 
						|
	archiveBaseName = 'spring-javapoet-repack'
 | 
						|
	archiveVersion = javapoetVersion
 | 
						|
	archiveClassifier = 'sources'
 | 
						|
	from javapoetSource
 | 
						|
}
 | 
						|
 | 
						|
task objenesisRepackJar(type: ShadowJar) {
 | 
						|
	archiveBaseName = 'spring-objenesis-repack'
 | 
						|
	archiveVersion = objenesisVersion
 | 
						|
	configurations = [project.configurations.objenesis]
 | 
						|
	relocate('org.objenesis', 'org.springframework.objenesis')
 | 
						|
}
 | 
						|
 | 
						|
task objenesisSource(type: ShadowSource) {
 | 
						|
	configurations = [project.configurations.objenesis]
 | 
						|
	relocate('org.objenesis', 'org.springframework.objenesis')
 | 
						|
	outputDirectory = file("build/shadow-source/objenesis")
 | 
						|
}
 | 
						|
 | 
						|
task objenesisSourceJar(type: Jar) {
 | 
						|
	archiveBaseName = 'spring-objenesis-repack'
 | 
						|
	archiveVersion = objenesisVersion
 | 
						|
	archiveClassifier = 'sources'
 | 
						|
	from objenesisSource
 | 
						|
}
 | 
						|
 | 
						|
dependencies {
 | 
						|
	javapoet("com.squareup:javapoet:${javapoetVersion}@jar")
 | 
						|
	objenesis("org.objenesis:objenesis:${objenesisVersion}@jar")
 | 
						|
	api(files(javapoetRepackJar))
 | 
						|
	api(files(objenesisRepackJar))
 | 
						|
	api(project(":spring-jcl"))
 | 
						|
	compileOnly("io.projectreactor.tools:blockhound")
 | 
						|
	compileOnly("org.graalvm.sdk:graal-sdk")
 | 
						|
	optional("net.sf.jopt-simple:jopt-simple")
 | 
						|
	optional("org.aspectj:aspectjweaver")
 | 
						|
	optional("org.jetbrains.kotlin:kotlin-reflect")
 | 
						|
	optional("org.jetbrains.kotlin:kotlin-stdlib")
 | 
						|
	optional("org.jetbrains.kotlinx:kotlinx-coroutines-core")
 | 
						|
	optional("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
 | 
						|
	optional("io.projectreactor:reactor-core")
 | 
						|
	optional("io.reactivex.rxjava3:rxjava")
 | 
						|
	optional("io.smallrye.reactive:mutiny")
 | 
						|
	optional("io.netty:netty-buffer")
 | 
						|
	optional("io.netty:netty5-buffer")
 | 
						|
	testImplementation("jakarta.annotation:jakarta.annotation-api")
 | 
						|
	testImplementation("jakarta.xml.bind:jakarta.xml.bind-api")
 | 
						|
	testImplementation("com.google.code.findbugs:jsr305")
 | 
						|
	testImplementation("com.fasterxml.woodstox:woodstox-core")
 | 
						|
	testImplementation("org.xmlunit:xmlunit-assertj")
 | 
						|
	testImplementation("org.xmlunit:xmlunit-matchers")
 | 
						|
	testImplementation("io.projectreactor:reactor-test")
 | 
						|
	testImplementation("io.projectreactor.tools:blockhound")
 | 
						|
	testImplementation("org.skyscreamer:jsonassert")
 | 
						|
	testImplementation("com.squareup.okhttp3:mockwebserver")
 | 
						|
	testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-json")
 | 
						|
	testImplementation("com.fasterxml.jackson.core:jackson-databind")
 | 
						|
	testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
 | 
						|
	testFixturesImplementation("com.google.code.findbugs:jsr305")
 | 
						|
	testFixturesImplementation("org.junit.platform:junit-platform-launcher")
 | 
						|
	testFixturesImplementation("org.junit.jupiter:junit-jupiter-api")
 | 
						|
	testFixturesImplementation("org.junit.jupiter:junit-jupiter-params")
 | 
						|
	testFixturesImplementation("org.assertj:assertj-core")
 | 
						|
	testFixturesImplementation("org.xmlunit:xmlunit-assertj")
 | 
						|
	testFixturesImplementation("io.projectreactor:reactor-test")
 | 
						|
}
 | 
						|
 | 
						|
jar {
 | 
						|
	manifest.attributes["Dependencies"] = "jdk.unsupported"  // for WildFly (-> Objenesis 3.2)
 | 
						|
 | 
						|
	dependsOn javapoetRepackJar
 | 
						|
	from(zipTree(javapoetRepackJar.archiveFile)) {
 | 
						|
		include "org/springframework/javapoet/**"
 | 
						|
	}
 | 
						|
 | 
						|
	dependsOn objenesisRepackJar
 | 
						|
	from(zipTree(objenesisRepackJar.archiveFile)) {
 | 
						|
		include "org/springframework/objenesis/**"
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
test {
 | 
						|
	// Make sure the classes dir is used on the test classpath (required by ResourceTests).
 | 
						|
	// When test fixtures are involved, the JAR is used by default.
 | 
						|
	classpath = sourceSets.main.output.classesDirs + files(sourceSets.main.output.resourcesDir) + classpath - files(jar.archiveFile)
 | 
						|
 | 
						|
	// Ensure that BlockHound tests run on JDK 13+. For details, see:
 | 
						|
	// https://github.com/reactor/BlockHound/issues/33
 | 
						|
	jvmArgs += [
 | 
						|
		"-XX:+AllowRedefinitionToAddDeleteMethods"
 | 
						|
	]
 | 
						|
}
 | 
						|
 | 
						|
sourcesJar {
 | 
						|
	dependsOn javapoetSourceJar
 | 
						|
	dependsOn objenesisSourceJar
 | 
						|
	from javapoetSource
 | 
						|
	from objenesisSource
 | 
						|
}
 | 
						|
 | 
						|
eclipse {
 | 
						|
	synchronizationTasks javapoetSourceJar, objenesisSourceJar
 | 
						|
	classpath {
 | 
						|
		file {
 | 
						|
			whenMerged {
 | 
						|
				def pattern = ~/\/spring-\w+-repack-/
 | 
						|
				entries.forEach {
 | 
						|
					if (pattern.matcher(it.path).find()) {
 | 
						|
						def sourcesJar = it.path.replace('.jar', '-sources.jar')
 | 
						|
						it.sourcePath = fileReference(file(sourcesJar))
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
tasks['eclipse'].dependsOn(javapoetRepackJar, javapoetSourceJar, objenesisRepackJar, objenesisSourceJar)
 |