From dfae8effa8c26ab69cf7b237b3c2fdd382f64b75 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Thu, 6 Jan 2022 14:52:48 +0100 Subject: [PATCH] Repackage Javapoet in org.springframework.javapoet This commit repackages the Javapoet library into spring-core so that it can be used by the AOT engine without requiring a specific version. Closes gh-27828 --- spring-core/spring-core.gradle | 23 ++++++++++++++++--- .../javapoet/package-info.java | 6 +++++ src/docs/dist/license.txt | 8 +++++++ 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 spring-core/src/main/java/org/springframework/javapoet/package-info.java diff --git a/spring-core/spring-core.gradle b/spring-core/spring-core.gradle index ed8730d957..452905bdf9 100644 --- a/spring-core/spring-core.gradle +++ b/spring-core/spring-core.gradle @@ -4,14 +4,17 @@ description = "Spring Core" apply plugin: "kotlin" -// spring-core includes asm and repackages cglib, inlining both into the spring-core jar. -// cglib itself depends on asm and is therefore further transformed by the ShadowJar task to -// depend on org.springframework.asm; this avoids including two different copies of asm. +// spring-core includes asm, javapoet and repackages cglib, inlining all into the +// spring-core jar. cglib itself depends on asm and is therefore further transformed by +// the ShadowJar task to depend on org.springframework.asm; this avoids including two +// different copies of asm. def cglibVersion = "3.3.0" +def javapoetVersion = "1.13.0" def objenesisVersion = "3.2" configurations { cglib + javapoet objenesis } @@ -23,6 +26,13 @@ task cglibRepackJar(type: ShadowJar) { relocate 'org.objectweb.asm', 'org.springframework.asm' } +task javapoetRepackJar(type: ShadowJar) { + archiveBaseName.set('spring-javapoet-repack') + archiveVersion.set(javapoetVersion) + configurations = [project.configurations.javapoet] + relocate 'com.squareup.javapoet', 'org.springframework.javapoet' +} + task objenesisRepackJar(type: ShadowJar) { archiveBaseName.set('spring-objenesis-repack') archiveVersion.set(objenesisVersion) @@ -32,8 +42,10 @@ task objenesisRepackJar(type: ShadowJar) { dependencies { cglib("cglib:cglib:${cglibVersion}@jar") + javapoet("com.squareup:javapoet:${javapoetVersion}@jar") objenesis("org.objenesis:objenesis:${objenesisVersion}@jar") api(files(cglibRepackJar)) + api(files(javapoetRepackJar)) api(files(objenesisRepackJar)) api(project(":spring-jcl")) compileOnly("io.projectreactor.tools:blockhound") @@ -83,6 +95,11 @@ jar { exclude "org/springframework/cglib/proxy/MethodProxy*.class" } + dependsOn javapoetRepackJar + from(zipTree(javapoetRepackJar.archivePath)) { + include "org/springframework/javapoet/**" + } + dependsOn objenesisRepackJar from(zipTree(objenesisRepackJar.archivePath)) { include "org/springframework/objenesis/**" diff --git a/spring-core/src/main/java/org/springframework/javapoet/package-info.java b/spring-core/src/main/java/org/springframework/javapoet/package-info.java new file mode 100644 index 0000000000..5f7f7c3ff6 --- /dev/null +++ b/spring-core/src/main/java/org/springframework/javapoet/package-info.java @@ -0,0 +1,6 @@ +/** + * Spring's repackaging of + * JavaPoet + * (with Spring-specific utilities; for internal use only). + */ +package org.springframework.javapoet; diff --git a/src/docs/dist/license.txt b/src/docs/dist/license.txt index c68e1154b1..2170aa9784 100644 --- a/src/docs/dist/license.txt +++ b/src/docs/dist/license.txt @@ -255,6 +255,14 @@ CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which is included above. +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + >>> Objenesis 3.1 (org.objenesis:objenesis:3.1): Per the LICENSE file in the Objenesis ZIP distribution downloaded from