Skip to content

Commit 7467c46

Browse files
authored
Merge pull request #19 from BGMSound/develop
[Refactor] Refactor maven publish script to streamline publishing configuration
2 parents 0433a0d + deeb51a commit 7467c46

39 files changed

Lines changed: 135 additions & 289 deletions

.github/workflows/deploy-to-mavencentral.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,7 @@ jobs:
4141
echo "mavenCentralPassword=$MAVEN_CENTRAL_PASSWORD" >> gradle.properties
4242
./gradlew --stacktrace documentify-core:publish
4343
./gradlew --stacktrace documentify-plugin:publish
44-
./gradlew --stacktrace documentify-starters:documentify-mvc:publish
45-
./gradlew --stacktrace documentify-starters:documentify-reactive:publish
44+
./gradlew --stacktrace documentify-project:documentify-mvc:publish
45+
./gradlew --stacktrace documentify-project:documentify-reactive:publish
46+
./gradlew --stacktrace documentify-starters:documentify-starter-mvc:publish
47+
./gradlew --stacktrace documentify-starters:documentify-starter-reactive:publish

build.gradle.kts

Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,31 @@
1+
import com.vanniktech.maven.publish.MavenPublishBaseExtension
2+
import com.vanniktech.maven.publish.SonatypeHost
13
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
24
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
5+
import java.time.Year
36

47
plugins {
58
alias(libs.plugins.kotlin.jvm) apply false
69
alias(libs.plugins.kotlin.plugin.spring) apply false
10+
alias(libs.plugins.gradle.mavenCentral.publish) apply false
711
alias(libs.plugins.kotlinx.kover)
812
java
13+
signing
14+
`maven-publish`
915
}
1016

1117
group = extra["project.group"] as String
1218
version = extra["project.version.id"] as String
1319

20+
val publicModulePathSet = setOf(
21+
rootProject.projects.documentifyCore.identityPath.path,
22+
rootProject.projects.documentifyPlugin.identityPath.path,
23+
rootProject.projects.documentifyProject.documentifyMvc.identityPath.path,
24+
rootProject.projects.documentifyProject.documentifyReactive.identityPath.path,
25+
rootProject.projects.documentifyStarters.documentifyStarterMvc.identityPath.path,
26+
rootProject.projects.documentifyStarters.documentifyStarterReactive.identityPath.path
27+
)
28+
1429
subprojects {
1530
group = rootProject.group
1631
version = rootProject.version
@@ -36,6 +51,70 @@ subprojects {
3651
useJUnitPlatform()
3752
}
3853
}
54+
if (publicModulePathSet.contains(project.path)) {
55+
with(pluginManager) {
56+
apply(rootProject.libs.plugins.gradle.mavenCentral.publish.get().pluginId)
57+
apply(plugin = "signing")
58+
apply(plugin = "maven-publish")
59+
}
60+
configure<SigningExtension> {
61+
val gpgSecret = project.findProperty("gpg.secret").toString()
62+
val gpgPassphrase = project.findProperty("gpg.passphrase").toString()
63+
64+
useInMemoryPgpKeys(gpgSecret, gpgPassphrase)
65+
sign(publishing.publications)
66+
}
67+
configure<MavenPublishBaseExtension> {
68+
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
69+
70+
val artifactId = name.replace("-plugin", ".gradle.plugin")
71+
val projectGroup = property("project.group").toString()
72+
val projectName = property("project.name").toString()
73+
val projectVersion = property("project.version.id").toString()
74+
val projectDescription = property("project.description").toString()
75+
val projectUrl = property("project.url").toString()
76+
val projectUrlScm = property("project.url.scm").toString()
77+
val projectLicense = property("project.license").toString()
78+
val projectLicenseUrl = property("project.license.url").toString()
79+
val projectDeveloperId = property("project.developer.id").toString()
80+
val projectDeveloperName = property("project.developer.name").toString()
81+
val projectDeveloperEmail = property("project.developer.email").toString()
82+
val projectDeveloperUrl = property("project.developer.url").toString()
83+
84+
coordinates(
85+
groupId = projectGroup,
86+
artifactId = artifactId,
87+
version = projectVersion
88+
)
89+
90+
pom {
91+
name = projectName
92+
description = projectDescription
93+
inceptionYear = "${Year.now().value}"
94+
url = projectUrl
95+
licenses {
96+
license {
97+
name = projectLicense
98+
url = projectLicenseUrl
99+
distribution = projectUrl
100+
}
101+
}
102+
developers {
103+
developer {
104+
id = projectDeveloperId
105+
name = projectDeveloperName
106+
email = projectDeveloperEmail
107+
url = projectDeveloperUrl
108+
}
109+
}
110+
scm {
111+
url = projectUrlScm
112+
connection = "scm:git:git://github.com/${projectDeveloperId}"
113+
developerConnection = "scm:git:ssh://git@github.com/${projectDeveloperId}"
114+
}
115+
}
116+
}
117+
}
39118
}
40119

41120
repositories {
@@ -46,8 +125,8 @@ kover {
46125
merge {
47126
projects(
48127
rootProject.projects.documentifyCore.identityPath.path,
49-
rootProject.projects.documentifyStarters.documentifyMvc.identityPath.path,
50-
rootProject.projects.documentifyStarters.documentifyReactive.identityPath.path,
128+
rootProject.projects.documentifyProject.documentifyMvc.identityPath.path,
129+
rootProject.projects.documentifyProject.documentifyReactive.identityPath.path,
51130
rootProject.projects.documentifySample.mvcSample.identityPath.path,
52131
rootProject.projects.documentifySample.reactiveSample.identityPath.path
53132
)

documentify-core/build.gradle.kts

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
import com.vanniktech.maven.publish.SonatypeHost
2-
import java.time.Year
3-
4-
plugins {
5-
alias(libs.plugins.gradle.mavenCentral.publish)
6-
signing
7-
`maven-publish`
8-
}
9-
101
dependencies {
112
implementation(libs.spring.boot.starter.test)
123
implementation(libs.restdocs.api.spec)
@@ -15,62 +6,4 @@ dependencies {
156
compileOnly(libs.spring.boot.starter.webflux)
167
api(libs.jackson.databind)
178
api(libs.jackson.datatype.jsr310)
18-
}
19-
20-
signing {
21-
val gpgSecret = project.findProperty("gpg.secret").toString()
22-
val gpgPassphrase = project.findProperty("gpg.passphrase").toString()
23-
24-
useInMemoryPgpKeys(gpgSecret, gpgPassphrase)
25-
sign(publishing.publications)
26-
}
27-
28-
mavenPublishing {
29-
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
30-
31-
val projectGroup = property("project.group").toString()
32-
val projectName = property("project.name").toString()
33-
val projectVersion = property("project.version.id").toString()
34-
val projectDescription = property("project.description").toString()
35-
val projectUrl = property("project.url").toString()
36-
val projectUrlScm = property("project.url.scm").toString()
37-
val projectLicense = property("project.license").toString()
38-
val projectLicenseUrl = property("project.license.url").toString()
39-
val projectDeveloperId = property("project.developer.id").toString()
40-
val projectDeveloperName = property("project.developer.name").toString()
41-
val projectDeveloperEmail = property("project.developer.email").toString()
42-
val projectDeveloperUrl = property("project.developer.url").toString()
43-
44-
coordinates(
45-
groupId = projectGroup,
46-
artifactId = "$projectName-core",
47-
version = projectVersion
48-
)
49-
50-
pom {
51-
name = projectName
52-
description = projectDescription
53-
inceptionYear = "${Year.now().value}"
54-
url = projectUrl
55-
licenses {
56-
license {
57-
name = projectLicense
58-
url = projectLicenseUrl
59-
distribution = projectUrl
60-
}
61-
}
62-
developers {
63-
developer {
64-
id = projectDeveloperId
65-
name = projectDeveloperName
66-
email = projectDeveloperEmail
67-
url = projectDeveloperUrl
68-
}
69-
}
70-
scm {
71-
url = projectUrlScm
72-
connection = "scm:git:git://github.com/${projectDeveloperId}"
73-
developerConnection = "scm:git:ssh://git@github.com/${projectDeveloperId}"
74-
}
75-
}
769
}
Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
1-
import com.vanniktech.maven.publish.SonatypeHost
2-
import java.time.Year
3-
41
plugins {
5-
alias(libs.plugins.gradle.mavenCentral.publish)
62
`java-gradle-plugin`
7-
`maven-publish`
8-
signing
93
}
104

115
repositories {
@@ -26,63 +20,4 @@ gradlePlugin {
2620
dependencies {
2721
implementation(gradleApi())
2822
implementation(libs.restdocs.api.spec.gradlePlugin)
29-
}
30-
31-
32-
signing {
33-
val gpgSecret = project.findProperty("gpg.secret").toString()
34-
val gpgPassphrase = project.findProperty("gpg.passphrase").toString()
35-
36-
useInMemoryPgpKeys(gpgSecret, gpgPassphrase)
37-
sign(publishing.publications)
38-
}
39-
40-
mavenPublishing {
41-
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
42-
43-
val projectGroup = property("project.group").toString()
44-
val projectName = property("project.name").toString()
45-
val projectVersion = property("project.version.id").toString()
46-
val projectDescription = property("project.description").toString()
47-
val projectUrl = property("project.url").toString()
48-
val projectUrlScm = property("project.url.scm").toString()
49-
val projectLicense = property("project.license").toString()
50-
val projectLicenseUrl = property("project.license.url").toString()
51-
val projectDeveloperId = property("project.developer.id").toString()
52-
val projectDeveloperName = property("project.developer.name").toString()
53-
val projectDeveloperEmail = property("project.developer.email").toString()
54-
val projectDeveloperUrl = property("project.developer.url").toString()
55-
56-
coordinates(
57-
groupId = projectGroup,
58-
artifactId = "$projectName.gradle.plugin",
59-
version = projectVersion
60-
)
61-
62-
pom {
63-
name = projectName
64-
description = projectDescription
65-
inceptionYear = "${Year.now().value}"
66-
url = projectUrl
67-
licenses {
68-
license {
69-
name = projectLicense
70-
url = projectLicenseUrl
71-
distribution = projectUrl
72-
}
73-
}
74-
developers {
75-
developer {
76-
id = projectDeveloperId
77-
name = projectDeveloperName
78-
email = projectDeveloperEmail
79-
url = projectDeveloperUrl
80-
}
81-
}
82-
scm {
83-
url = projectUrlScm
84-
connection = "scm:git:git://github.com/${projectDeveloperId}"
85-
developerConnection = "scm:git:ssh://git@github.com/${projectDeveloperId}"
86-
}
87-
}
8823
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
subprojects {
2+
with(pluginManager) {
3+
apply(rootProject.libs.plugins.gradle.mavenCentral.publish.get().pluginId)
4+
}
5+
dependencies {
6+
compileOnly(rootProject.libs.spring.boot.starter.test)
7+
api(rootProject.projects.documentifyCore)
8+
}
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
dependencies {
2+
compileOnly(libs.spring.boot.starter.web)
3+
implementation(libs.spring.restdocs.mockmvc)
4+
implementation(libs.spring.restdocs.restassured)
5+
implementation(libs.restassured.mockmvc)
6+
implementation(libs.restdocs.api.spec)
7+
implementation(libs.restdocs.api.spec.mockmvc)
8+
implementation(libs.restdocs.api.spec.restassured)
9+
}

documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/AbstractMvcDocumentContextEnvironment.kt renamed to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/AbstractMvcDocumentContextEnvironment.kt

File renamed without changes.

documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/Documentify.kt renamed to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/Documentify.kt

File renamed without changes.

documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/MvcDocumentContextEnvironment.kt renamed to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/MvcDocumentContextEnvironment.kt

File renamed without changes.

documentify-starters/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockMvcResponseAdapter.kt renamed to documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/ValidatableMockMvcResponseAdapter.kt

File renamed without changes.

0 commit comments

Comments
 (0)