1+ import com.vanniktech.maven.publish.MavenPublishBaseExtension
2+ import com.vanniktech.maven.publish.SonatypeHost
13import org.jetbrains.kotlin.gradle.dsl.JvmTarget
24import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
5+ import java.time.Year
36
47plugins {
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
1117group = extra[" project.group" ] as String
1218version = 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+
1429subprojects {
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
41120repositories {
@@ -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 )
0 commit comments