From 93b388e023ec58c532475642f547d9941f68f37a Mon Sep 17 00:00:00 2001 From: Gyumin Bae Date: Tue, 25 Mar 2025 22:48:15 +0900 Subject: [PATCH 1/2] Refactor project structure --- .github/workflows/deploy-to-mavencentral.yaml | 6 +- documentify-project/build.gradle.kts | 9 +++ .../documentify-mvc/build.gradle.kts | 9 +++ .../AbstractMvcDocumentContextEnvironment.kt | 0 .../bgmsound/documentify/mvc/Documentify.kt | 0 .../mvc/MvcDocumentContextEnvironment.kt | 0 .../mvc/ValidatableMockMvcResponseAdapter.kt | 0 .../mvc/ValidatableMockResponse.kt | 0 .../mvc/emitter/AbstractMvcDocumentEmitter.kt | 0 ...lternativeMvcResponseDocumentController.kt | 0 .../documentify/mvc/emitter/EmitterFactory.kt | 0 .../mvc/emitter/MvcDocumentEmitter.kt | 0 .../emitter/RestAssuredMvcDocumentEmitter.kt | 0 .../environment/MockMvcContextEnvironment.kt | 0 .../StandaloneMvcContextEnvironment.kt | 0 .../WebApplicationContextEnvironment.kt | 0 .../documentify-reactive/build.gradle.kts | 6 ++ ...tractReactiveDocumentContextEnvironment.kt | 0 .../documentify/reactive/Documentify.kt | 0 .../ReactiveDocumentContextEnvironment.kt | 0 .../AbstractReactiveDocumentEmitter.kt | 0 ...ativeReactiveResponseDocumentController.kt | 0 .../reactive/emitter/EmitterFactory.kt | 0 .../emitter/ReactiveDocumentEmitter.kt | 0 .../WebTestClientReactiveDocumentEmitter.kt | 0 .../ApplicationContextEnvironment.kt | 0 .../StandaloneReactiveContextEnvironment.kt | 0 .../WebTestClientContextEnvironment.kt | 0 .../mvc-sample/build.gradle.kts | 2 +- .../reactive-sample/build.gradle.kts | 2 +- .../documentify-mvc/build.gradle.kts | 75 ------------------- .../documentify-reactive/build.gradle.kts | 72 ------------------ .../documentify-starter-mvc/build.gradle.kts | 10 +++ .../build.gradle.kts | 7 ++ gradle.properties | 2 +- settings.gradle.kts | 9 ++- 36 files changed, 54 insertions(+), 155 deletions(-) create mode 100644 documentify-project/build.gradle.kts create mode 100644 documentify-project/documentify-mvc/build.gradle.kts rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/AbstractMvcDocumentContextEnvironment.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/Documentify.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/MvcDocumentContextEnvironment.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockMvcResponseAdapter.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockResponse.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/AbstractMvcDocumentEmitter.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/AlternativeMvcResponseDocumentController.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/EmitterFactory.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/MvcDocumentEmitter.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/RestAssuredMvcDocumentEmitter.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/MockMvcContextEnvironment.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/StandaloneMvcContextEnvironment.kt (100%) rename {documentify-starters => documentify-project}/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/WebApplicationContextEnvironment.kt (100%) create mode 100644 documentify-project/documentify-reactive/build.gradle.kts rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/AbstractReactiveDocumentContextEnvironment.kt (100%) rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/Documentify.kt (100%) rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/ReactiveDocumentContextEnvironment.kt (100%) rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/AbstractReactiveDocumentEmitter.kt (100%) rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/AlternativeReactiveResponseDocumentController.kt (100%) rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/EmitterFactory.kt (100%) rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentEmitter.kt (100%) rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/WebTestClientReactiveDocumentEmitter.kt (100%) rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/ApplicationContextEnvironment.kt (100%) rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/StandaloneReactiveContextEnvironment.kt (100%) rename {documentify-starters => documentify-project}/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/WebTestClientContextEnvironment.kt (100%) delete mode 100644 documentify-starters/documentify-mvc/build.gradle.kts delete mode 100644 documentify-starters/documentify-reactive/build.gradle.kts create mode 100644 documentify-starters/documentify-starter-mvc/build.gradle.kts create mode 100644 documentify-starters/documentify-starter-reactive/build.gradle.kts diff --git a/.github/workflows/deploy-to-mavencentral.yaml b/.github/workflows/deploy-to-mavencentral.yaml index 47338c7..67dfba4 100644 --- a/.github/workflows/deploy-to-mavencentral.yaml +++ b/.github/workflows/deploy-to-mavencentral.yaml @@ -41,5 +41,7 @@ jobs: echo "mavenCentralPassword=$MAVEN_CENTRAL_PASSWORD" >> gradle.properties ./gradlew --stacktrace documentify-core:publish ./gradlew --stacktrace documentify-plugin:publish - ./gradlew --stacktrace documentify-starters:documentify-mvc:publish - ./gradlew --stacktrace documentify-starters:documentify-reactive:publish \ No newline at end of file + ./gradlew --stacktrace documentify-project:documentify-mvc:publish + ./gradlew --stacktrace documentify-project:documentify-reactive:publish + ./gradlew --stacktrace documentify-starters:documentify-starter-mvc:publish + ./gradlew --stacktrace documentify-starters:documentify-starter-reactive:publish \ No newline at end of file diff --git a/documentify-project/build.gradle.kts b/documentify-project/build.gradle.kts new file mode 100644 index 0000000..6a1a744 --- /dev/null +++ b/documentify-project/build.gradle.kts @@ -0,0 +1,9 @@ +subprojects { + with(pluginManager) { + apply(rootProject.libs.plugins.gradle.mavenCentral.publish.get().pluginId) + } + dependencies { + compileOnly(rootProject.libs.spring.boot.starter.test) + api(rootProject.projects.documentifyCore) + } +} \ No newline at end of file diff --git a/documentify-project/documentify-mvc/build.gradle.kts b/documentify-project/documentify-mvc/build.gradle.kts new file mode 100644 index 0000000..1705f11 --- /dev/null +++ b/documentify-project/documentify-mvc/build.gradle.kts @@ -0,0 +1,9 @@ +dependencies { + compileOnly(libs.spring.boot.starter.web) + implementation(libs.spring.restdocs.mockmvc) + implementation(libs.spring.restdocs.restassured) + implementation(libs.restassured.mockmvc) + implementation(libs.restdocs.api.spec) + implementation(libs.restdocs.api.spec.mockmvc) + implementation(libs.restdocs.api.spec.restassured) +} \ No newline at end of file diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/AbstractMvcDocumentContextEnvironment.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/AbstractMvcDocumentContextEnvironment.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/AbstractMvcDocumentContextEnvironment.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/AbstractMvcDocumentContextEnvironment.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/Documentify.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/Documentify.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/Documentify.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/Documentify.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/MvcDocumentContextEnvironment.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/MvcDocumentContextEnvironment.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/MvcDocumentContextEnvironment.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/MvcDocumentContextEnvironment.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockMvcResponseAdapter.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockMvcResponseAdapter.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockMvcResponseAdapter.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockMvcResponseAdapter.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockResponse.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockResponse.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockResponse.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockResponse.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/AbstractMvcDocumentEmitter.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/AbstractMvcDocumentEmitter.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/AbstractMvcDocumentEmitter.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/AbstractMvcDocumentEmitter.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/AlternativeMvcResponseDocumentController.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/AlternativeMvcResponseDocumentController.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/AlternativeMvcResponseDocumentController.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/AlternativeMvcResponseDocumentController.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/EmitterFactory.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/EmitterFactory.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/EmitterFactory.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/EmitterFactory.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/MvcDocumentEmitter.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/MvcDocumentEmitter.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/MvcDocumentEmitter.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/MvcDocumentEmitter.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/RestAssuredMvcDocumentEmitter.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/RestAssuredMvcDocumentEmitter.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/RestAssuredMvcDocumentEmitter.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/RestAssuredMvcDocumentEmitter.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/MockMvcContextEnvironment.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/MockMvcContextEnvironment.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/MockMvcContextEnvironment.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/MockMvcContextEnvironment.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/StandaloneMvcContextEnvironment.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/StandaloneMvcContextEnvironment.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/StandaloneMvcContextEnvironment.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/StandaloneMvcContextEnvironment.kt diff --git a/documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/WebApplicationContextEnvironment.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/WebApplicationContextEnvironment.kt similarity index 100% rename from documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/WebApplicationContextEnvironment.kt rename to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/environment/WebApplicationContextEnvironment.kt diff --git a/documentify-project/documentify-reactive/build.gradle.kts b/documentify-project/documentify-reactive/build.gradle.kts new file mode 100644 index 0000000..4b32801 --- /dev/null +++ b/documentify-project/documentify-reactive/build.gradle.kts @@ -0,0 +1,6 @@ +dependencies { + compileOnly(libs.spring.boot.starter.webflux) + implementation(libs.spring.restdocs.webtestclient) + implementation(libs.restdocs.api.spec) + implementation(libs.restdocs.api.spec.webtestclient) +} \ No newline at end of file diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/AbstractReactiveDocumentContextEnvironment.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/AbstractReactiveDocumentContextEnvironment.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/AbstractReactiveDocumentContextEnvironment.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/AbstractReactiveDocumentContextEnvironment.kt diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/Documentify.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/Documentify.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/Documentify.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/Documentify.kt diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/ReactiveDocumentContextEnvironment.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/ReactiveDocumentContextEnvironment.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/ReactiveDocumentContextEnvironment.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/ReactiveDocumentContextEnvironment.kt diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/AbstractReactiveDocumentEmitter.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/AbstractReactiveDocumentEmitter.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/AbstractReactiveDocumentEmitter.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/AbstractReactiveDocumentEmitter.kt diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/AlternativeReactiveResponseDocumentController.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/AlternativeReactiveResponseDocumentController.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/AlternativeReactiveResponseDocumentController.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/AlternativeReactiveResponseDocumentController.kt diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/EmitterFactory.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/EmitterFactory.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/EmitterFactory.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/EmitterFactory.kt diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentEmitter.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentEmitter.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentEmitter.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentEmitter.kt diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/WebTestClientReactiveDocumentEmitter.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/WebTestClientReactiveDocumentEmitter.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/WebTestClientReactiveDocumentEmitter.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/WebTestClientReactiveDocumentEmitter.kt diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/ApplicationContextEnvironment.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/ApplicationContextEnvironment.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/ApplicationContextEnvironment.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/ApplicationContextEnvironment.kt diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/StandaloneReactiveContextEnvironment.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/StandaloneReactiveContextEnvironment.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/StandaloneReactiveContextEnvironment.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/StandaloneReactiveContextEnvironment.kt diff --git a/documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/WebTestClientContextEnvironment.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/WebTestClientContextEnvironment.kt similarity index 100% rename from documentify-starters/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/WebTestClientContextEnvironment.kt rename to documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/environment/WebTestClientContextEnvironment.kt diff --git a/documentify-sample/mvc-sample/build.gradle.kts b/documentify-sample/mvc-sample/build.gradle.kts index 9861443..67f46d3 100644 --- a/documentify-sample/mvc-sample/build.gradle.kts +++ b/documentify-sample/mvc-sample/build.gradle.kts @@ -1,6 +1,6 @@ dependencies { implementation(rootProject.libs.spring.boot.starter.web) - testImplementation(rootProject.projects.documentifyStarters.documentifyMvc) + testImplementation(rootProject.projects.documentifyStarters.documentifyStarterMvc) } openapi3 { diff --git a/documentify-sample/reactive-sample/build.gradle.kts b/documentify-sample/reactive-sample/build.gradle.kts index 4c14610..8af192a 100644 --- a/documentify-sample/reactive-sample/build.gradle.kts +++ b/documentify-sample/reactive-sample/build.gradle.kts @@ -4,7 +4,7 @@ dependencies { implementation(libs.kotlinx.coroutines) implementation(libs.kotlinx.coroutines.reactor) - testImplementation(rootProject.projects.documentifyStarters.documentifyReactive) + testImplementation(rootProject.projects.documentifyStarters.documentifyStarterReactive) testImplementation(libs.kotlinx.coroutines.test) testImplementation(kotlin("test")) } diff --git a/documentify-starters/documentify-mvc/build.gradle.kts b/documentify-starters/documentify-mvc/build.gradle.kts deleted file mode 100644 index ff45956..0000000 --- a/documentify-starters/documentify-mvc/build.gradle.kts +++ /dev/null @@ -1,75 +0,0 @@ -import com.vanniktech.maven.publish.SonatypeHost -import java.time.Year - -plugins { - signing - `maven-publish` -} - -dependencies { - compileOnly(libs.spring.boot.starter.web) - api(libs.spring.restdocs.mockmvc) - api(libs.spring.restdocs.restassured) - api(libs.restassured.mockmvc) - api(libs.restdocs.api.spec) - api(libs.restdocs.api.spec.mockmvc) - api(libs.restdocs.api.spec.restassured) -} - -signing { - val gpgSecret = project.findProperty("gpg.secret").toString() - val gpgPassphrase = project.findProperty("gpg.passphrase").toString() - - useInMemoryPgpKeys(gpgSecret, gpgPassphrase) - sign(publishing.publications) -} - -mavenPublishing { - publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) - - val projectGroup = property("project.group").toString() - val projectName = property("project.name").toString() - val projectVersion = property("project.version.id").toString() - val projectDescription = property("project.description").toString() - val projectUrl = property("project.url").toString() - val projectUrlScm = property("project.url.scm").toString() - val projectLicense = property("project.license").toString() - val projectLicenseUrl = property("project.license.url").toString() - val projectDeveloperId = property("project.developer.id").toString() - val projectDeveloperName = property("project.developer.name").toString() - val projectDeveloperEmail = property("project.developer.email").toString() - val projectDeveloperUrl = property("project.developer.url").toString() - - coordinates( - groupId = projectGroup, - artifactId = "$projectName-mvc", - version = projectVersion - ) - - pom { - name = projectName - description = projectDescription - inceptionYear = "${Year.now().value}" - url = projectUrl - licenses { - license { - name = projectLicense - url = projectLicenseUrl - distribution = projectUrl - } - } - developers { - developer { - id = projectDeveloperId - name = projectDeveloperName - email = projectDeveloperEmail - url = projectDeveloperUrl - } - } - scm { - url = projectUrlScm - connection = "scm:git:git://github.com/${projectDeveloperId}" - developerConnection = "scm:git:ssh://git@github.com/${projectDeveloperId}" - } - } -} \ No newline at end of file diff --git a/documentify-starters/documentify-reactive/build.gradle.kts b/documentify-starters/documentify-reactive/build.gradle.kts deleted file mode 100644 index 11e11ad..0000000 --- a/documentify-starters/documentify-reactive/build.gradle.kts +++ /dev/null @@ -1,72 +0,0 @@ -import com.vanniktech.maven.publish.SonatypeHost -import java.time.Year - -plugins { - signing - `maven-publish` -} - -dependencies { - compileOnly(libs.spring.boot.starter.webflux) - api(libs.spring.restdocs.webtestclient) - api(libs.restdocs.api.spec) - api(libs.restdocs.api.spec.webtestclient) -} - -signing { - val gpgSecret = project.findProperty("gpg.secret").toString() - val gpgPassphrase = project.findProperty("gpg.passphrase").toString() - - useInMemoryPgpKeys(gpgSecret, gpgPassphrase) - sign(publishing.publications) -} - -mavenPublishing { - publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) - - val projectGroup = property("project.group").toString() - val projectName = property("project.name").toString() - val projectVersion = property("project.version.id").toString() - val projectDescription = property("project.description").toString() - val projectUrl = property("project.url").toString() - val projectUrlScm = property("project.url.scm").toString() - val projectLicense = property("project.license").toString() - val projectLicenseUrl = property("project.license.url").toString() - val projectDeveloperId = property("project.developer.id").toString() - val projectDeveloperName = property("project.developer.name").toString() - val projectDeveloperEmail = property("project.developer.email").toString() - val projectDeveloperUrl = property("project.developer.url").toString() - - coordinates( - groupId = projectGroup, - artifactId = "$projectName-reactive", - version = projectVersion - ) - - pom { - name = projectName - description = projectDescription - inceptionYear = "${Year.now().value}" - url = projectUrl - licenses { - license { - name = projectLicense - url = projectLicenseUrl - distribution = projectUrl - } - } - developers { - developer { - id = projectDeveloperId - name = projectDeveloperName - email = projectDeveloperEmail - url = projectDeveloperUrl - } - } - scm { - url = projectUrlScm - connection = "scm:git:git://github.com/${projectDeveloperId}" - developerConnection = "scm:git:ssh://git@github.com/${projectDeveloperId}" - } - } -} \ No newline at end of file diff --git a/documentify-starters/documentify-starter-mvc/build.gradle.kts b/documentify-starters/documentify-starter-mvc/build.gradle.kts new file mode 100644 index 0000000..9181dce --- /dev/null +++ b/documentify-starters/documentify-starter-mvc/build.gradle.kts @@ -0,0 +1,10 @@ +dependencies { + api(projects.documentifyCore) + api(projects.documentifyProject.documentifyMvc) + api(libs.spring.restdocs.mockmvc) + api(libs.spring.restdocs.restassured) + api(libs.restassured.mockmvc) + api(libs.restdocs.api.spec) + api(libs.restdocs.api.spec.mockmvc) + api(libs.restdocs.api.spec.restassured) +} \ No newline at end of file diff --git a/documentify-starters/documentify-starter-reactive/build.gradle.kts b/documentify-starters/documentify-starter-reactive/build.gradle.kts new file mode 100644 index 0000000..182fe46 --- /dev/null +++ b/documentify-starters/documentify-starter-reactive/build.gradle.kts @@ -0,0 +1,7 @@ +dependencies { + api(projects.documentifyCore) + api(projects.documentifyProject.documentifyReactive) + api(libs.spring.restdocs.webtestclient) + api(libs.restdocs.api.spec) + api(libs.restdocs.api.spec.webtestclient) +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index e3b48f5..1633220 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ project.name=documentify project.group=io.github.bgmsound -project.version.id=1.2.3 +project.version.id=1.2.4 project.artifact=documentify project.description=Documentify is a tool to generate API documentation from source code. diff --git a/settings.gradle.kts b/settings.gradle.kts index 1e914fe..f63d2cd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,13 +12,16 @@ plugins { } include("documentify-core") +include("documentify-plugin") +include("documentify-project") +include("documentify-project:documentify-mvc") +include("documentify-project:documentify-reactive") include("documentify-sample") include("documentify-sample:reactive-sample") include("documentify-sample:mvc-sample") -include("documentify-plugin") include("documentify-starters") -include("documentify-starters:documentify-mvc") -include("documentify-starters:documentify-reactive") +include("documentify-starters:documentify-starter-mvc") +include("documentify-starters:documentify-starter-reactive") enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file From deeb51ab0563750ccbe56e03cd76f4249a7ae7e6 Mon Sep 17 00:00:00 2001 From: Gyumin Bae Date: Tue, 25 Mar 2025 22:51:01 +0900 Subject: [PATCH 2/2] Refactor maven publish script to streamline publishing configuration --- build.gradle.kts | 83 ++++++++++++++++++++++++++++- documentify-core/build.gradle.kts | 67 ----------------------- documentify-plugin/build.gradle.kts | 65 ---------------------- 3 files changed, 81 insertions(+), 134 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 23c25dd..e0b0494 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,16 +1,31 @@ +import com.vanniktech.maven.publish.MavenPublishBaseExtension +import com.vanniktech.maven.publish.SonatypeHost import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import java.time.Year plugins { alias(libs.plugins.kotlin.jvm) apply false alias(libs.plugins.kotlin.plugin.spring) apply false + alias(libs.plugins.gradle.mavenCentral.publish) apply false alias(libs.plugins.kotlinx.kover) java + signing + `maven-publish` } group = extra["project.group"] as String version = extra["project.version.id"] as String +val publicModulePathSet = setOf( + rootProject.projects.documentifyCore.identityPath.path, + rootProject.projects.documentifyPlugin.identityPath.path, + rootProject.projects.documentifyProject.documentifyMvc.identityPath.path, + rootProject.projects.documentifyProject.documentifyReactive.identityPath.path, + rootProject.projects.documentifyStarters.documentifyStarterMvc.identityPath.path, + rootProject.projects.documentifyStarters.documentifyStarterReactive.identityPath.path +) + subprojects { group = rootProject.group version = rootProject.version @@ -36,6 +51,70 @@ subprojects { useJUnitPlatform() } } + if (publicModulePathSet.contains(project.path)) { + with(pluginManager) { + apply(rootProject.libs.plugins.gradle.mavenCentral.publish.get().pluginId) + apply(plugin = "signing") + apply(plugin = "maven-publish") + } + configure { + val gpgSecret = project.findProperty("gpg.secret").toString() + val gpgPassphrase = project.findProperty("gpg.passphrase").toString() + + useInMemoryPgpKeys(gpgSecret, gpgPassphrase) + sign(publishing.publications) + } + configure { + publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) + + val artifactId = name.replace("-plugin", ".gradle.plugin") + val projectGroup = property("project.group").toString() + val projectName = property("project.name").toString() + val projectVersion = property("project.version.id").toString() + val projectDescription = property("project.description").toString() + val projectUrl = property("project.url").toString() + val projectUrlScm = property("project.url.scm").toString() + val projectLicense = property("project.license").toString() + val projectLicenseUrl = property("project.license.url").toString() + val projectDeveloperId = property("project.developer.id").toString() + val projectDeveloperName = property("project.developer.name").toString() + val projectDeveloperEmail = property("project.developer.email").toString() + val projectDeveloperUrl = property("project.developer.url").toString() + + coordinates( + groupId = projectGroup, + artifactId = artifactId, + version = projectVersion + ) + + pom { + name = projectName + description = projectDescription + inceptionYear = "${Year.now().value}" + url = projectUrl + licenses { + license { + name = projectLicense + url = projectLicenseUrl + distribution = projectUrl + } + } + developers { + developer { + id = projectDeveloperId + name = projectDeveloperName + email = projectDeveloperEmail + url = projectDeveloperUrl + } + } + scm { + url = projectUrlScm + connection = "scm:git:git://github.com/${projectDeveloperId}" + developerConnection = "scm:git:ssh://git@github.com/${projectDeveloperId}" + } + } + } + } } repositories { @@ -46,8 +125,8 @@ kover { merge { projects( rootProject.projects.documentifyCore.identityPath.path, - rootProject.projects.documentifyStarters.documentifyMvc.identityPath.path, - rootProject.projects.documentifyStarters.documentifyReactive.identityPath.path, + rootProject.projects.documentifyProject.documentifyMvc.identityPath.path, + rootProject.projects.documentifyProject.documentifyReactive.identityPath.path, rootProject.projects.documentifySample.mvcSample.identityPath.path, rootProject.projects.documentifySample.reactiveSample.identityPath.path ) diff --git a/documentify-core/build.gradle.kts b/documentify-core/build.gradle.kts index 7221ab6..97a8880 100644 --- a/documentify-core/build.gradle.kts +++ b/documentify-core/build.gradle.kts @@ -1,12 +1,3 @@ -import com.vanniktech.maven.publish.SonatypeHost -import java.time.Year - -plugins { - alias(libs.plugins.gradle.mavenCentral.publish) - signing - `maven-publish` -} - dependencies { implementation(libs.spring.boot.starter.test) implementation(libs.restdocs.api.spec) @@ -15,62 +6,4 @@ dependencies { compileOnly(libs.spring.boot.starter.webflux) api(libs.jackson.databind) api(libs.jackson.datatype.jsr310) -} - -signing { - val gpgSecret = project.findProperty("gpg.secret").toString() - val gpgPassphrase = project.findProperty("gpg.passphrase").toString() - - useInMemoryPgpKeys(gpgSecret, gpgPassphrase) - sign(publishing.publications) -} - -mavenPublishing { - publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) - - val projectGroup = property("project.group").toString() - val projectName = property("project.name").toString() - val projectVersion = property("project.version.id").toString() - val projectDescription = property("project.description").toString() - val projectUrl = property("project.url").toString() - val projectUrlScm = property("project.url.scm").toString() - val projectLicense = property("project.license").toString() - val projectLicenseUrl = property("project.license.url").toString() - val projectDeveloperId = property("project.developer.id").toString() - val projectDeveloperName = property("project.developer.name").toString() - val projectDeveloperEmail = property("project.developer.email").toString() - val projectDeveloperUrl = property("project.developer.url").toString() - - coordinates( - groupId = projectGroup, - artifactId = "$projectName-core", - version = projectVersion - ) - - pom { - name = projectName - description = projectDescription - inceptionYear = "${Year.now().value}" - url = projectUrl - licenses { - license { - name = projectLicense - url = projectLicenseUrl - distribution = projectUrl - } - } - developers { - developer { - id = projectDeveloperId - name = projectDeveloperName - email = projectDeveloperEmail - url = projectDeveloperUrl - } - } - scm { - url = projectUrlScm - connection = "scm:git:git://github.com/${projectDeveloperId}" - developerConnection = "scm:git:ssh://git@github.com/${projectDeveloperId}" - } - } } \ No newline at end of file diff --git a/documentify-plugin/build.gradle.kts b/documentify-plugin/build.gradle.kts index f537f76..eda82ef 100644 --- a/documentify-plugin/build.gradle.kts +++ b/documentify-plugin/build.gradle.kts @@ -1,11 +1,5 @@ -import com.vanniktech.maven.publish.SonatypeHost -import java.time.Year - plugins { - alias(libs.plugins.gradle.mavenCentral.publish) `java-gradle-plugin` - `maven-publish` - signing } repositories { @@ -26,63 +20,4 @@ gradlePlugin { dependencies { implementation(gradleApi()) implementation(libs.restdocs.api.spec.gradlePlugin) -} - - -signing { - val gpgSecret = project.findProperty("gpg.secret").toString() - val gpgPassphrase = project.findProperty("gpg.passphrase").toString() - - useInMemoryPgpKeys(gpgSecret, gpgPassphrase) - sign(publishing.publications) -} - -mavenPublishing { - publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) - - val projectGroup = property("project.group").toString() - val projectName = property("project.name").toString() - val projectVersion = property("project.version.id").toString() - val projectDescription = property("project.description").toString() - val projectUrl = property("project.url").toString() - val projectUrlScm = property("project.url.scm").toString() - val projectLicense = property("project.license").toString() - val projectLicenseUrl = property("project.license.url").toString() - val projectDeveloperId = property("project.developer.id").toString() - val projectDeveloperName = property("project.developer.name").toString() - val projectDeveloperEmail = property("project.developer.email").toString() - val projectDeveloperUrl = property("project.developer.url").toString() - - coordinates( - groupId = projectGroup, - artifactId = "$projectName.gradle.plugin", - version = projectVersion - ) - - pom { - name = projectName - description = projectDescription - inceptionYear = "${Year.now().value}" - url = projectUrl - licenses { - license { - name = projectLicense - url = projectLicenseUrl - distribution = projectUrl - } - } - developers { - developer { - id = projectDeveloperId - name = projectDeveloperName - email = projectDeveloperEmail - url = projectDeveloperUrl - } - } - scm { - url = projectUrlScm - connection = "scm:git:git://github.com/${projectDeveloperId}" - developerConnection = "scm:git:ssh://git@github.com/${projectDeveloperId}" - } - } } \ No newline at end of file