11@file:Suppress(" unused" , " DuplicatedCode" )
22
3+ import com.vanniktech.maven.publish.MavenPublishBaseExtension
34import dev.kikugie.fletching_table.extension.FletchingTableExtension
45import dev.kikugie.stonecutter.build.StonecutterBuildExtension
56import me.modmuss50.mpp.ModPublishExtension
@@ -12,6 +13,7 @@ import org.gradle.api.artifacts.dsl.RepositoryHandler
1213import org.gradle.api.artifacts.repositories.MavenArtifactRepository
1314import org.gradle.api.plugins.JavaPluginExtension
1415import org.gradle.api.provider.Property
16+ import org.gradle.api.publish.PublishingExtension
1517import org.gradle.api.tasks.Copy
1618import org.gradle.internal.extensions.stdlib.toDefaultLowerCase
1719import org.gradle.jvm.tasks.Jar
@@ -22,7 +24,6 @@ import org.gradle.plugins.ide.idea.model.IdeaModel
2224import java.io.File
2325import java.util.*
2426import javax.inject.Inject
25- import kotlin.text.substringAfterLast
2627
2728fun Project.prop (name : String ): String = (findProperty(name) ? : " " ) as String
2829
@@ -92,7 +93,8 @@ abstract class ModPlatformPlugin @Inject constructor() : Plugin<Project> {
9293 listOf (
9394 " org.jetbrains.kotlin.jvm" ,
9495 " com.google.devtools.ksp" ,
95- " dev.kikugie.fletching-table"
96+ " dev.kikugie.fletching-table" ,
97+ " com.vanniktech.maven.publish" ,
9698 ).forEach { apply (plugin = it) }
9799
98100 afterEvaluate {
@@ -131,8 +133,8 @@ abstract class ModPlatformPlugin @Inject constructor() : Plugin<Project> {
131133 configureJarTask(modId, prop(" archives_base_name" ), loader)
132134 configureIdea()
133135 configureProcessResources(stonecutter, isFabric, isNeoForge, isForge, modId, modVersion, mcVersion, extension, extension.requiredJava.get())
134- registerBuildAndCollectTask(extension, " $ modVersion$channelTag " )
135- configurePublishing(extension, loader, stonecutter, " $ modVersion$channelTag " , channelTag, version.toString())
136+ registerBuildAndCollectTask(extension, modVersion)
137+ configurePublishing(extension, loader, stonecutter, modVersion, channelTag, version.toString())
136138 }
137139
138140 private fun Project.configureJarTask (modId : String , archivesBaseName : String , loader : String ) {
@@ -279,7 +281,7 @@ abstract class ModPlatformPlugin @Inject constructor() : Plugin<Project> {
279281 private fun Project.configureJava (stonecutter : StonecutterBuildExtension , requiredJava : JavaVersion ) {
280282 extensions.configure<JavaPluginExtension >(" java" ) {
281283 withSourcesJar()
282- withJavadocJar()
284+ // withJavadocJar()
283285 toolchain.languageVersion = JavaLanguageVersion .of(requiredJava.majorVersion)
284286 sourceCompatibility = requiredJava
285287 targetCompatibility = requiredJava
@@ -388,12 +390,7 @@ abstract class ModPlatformPlugin @Inject constructor() : Plugin<Project> {
388390 dryRun = true
389391 }
390392
391- val isForge = false
392- val targetName = if (isForge) {
393- " reobfJar"
394- } else {
395- ext.jarTask.get()
396- }
393+ val targetName = ext.jarTask.get()
397394
398395 val jarTask = tasks.named(targetName).map { it as Jar }
399396 val srcJarTask = tasks.named(ext.sourcesJarTask.get()).map { it as Jar }
@@ -412,6 +409,51 @@ abstract class ModPlatformPlugin @Inject constructor() : Plugin<Project> {
412409 modrinth(deps, currentVersion, additionalVersions, mrStaging, modrinthAccessToken)
413410 if (! mrStaging) curseforge(deps, currentVersion, additionalVersions, false , curseforgeAccessToken)
414411 }
412+
413+ extensions.configure<MavenPublishBaseExtension >(" mavenPublishing" ) {
414+ coordinates(groupId = prop(" maven_group" ), artifactId = " ${prop(" mod_id" )} -${loader} " , version = " ${stonecutter.current.version} -${modVersion} " )
415+
416+ pom {
417+ name = " ${prop(" mod_name" )} [${loader.replaceFirstChar(Char ::titlecase)} ]"
418+ description = prop(" mod_description" )
419+ url = prop(" mod_source" )
420+ scm {
421+ url = prop(" mod_source" )
422+ connection = prop(" mod_source" ).replace(" https" , " scm:git:git" ) + " .git"
423+ developerConnection = prop(" mod_source" ).replace(" https://github.com/" , " scm:git:git@github.com:" ) + " .git"
424+ }
425+ issueManagement {
426+ system = " github"
427+ url = prop(" mod_issues" )
428+ }
429+ licenses {
430+ license {
431+ name = " MPL-2"
432+ url = " https://www.mozilla.org/en-US/MPL/2.0/"
433+ }
434+ }
435+ developers {
436+ developer {
437+ id = prop(" mod_authors" ).toDefaultLowerCase()
438+ name = prop(" mod_authors" )
439+ }
440+ }
441+ }
442+ }
443+ extensions.configure<PublishingExtension >(" publishing" ) {
444+ repositories {
445+ maven {
446+ repositories {
447+ maven {
448+ name = " ModResources"
449+ val modResourcesURL = project.findProperty(" MOD_RESOURCES" ) ? : System .getenv(" MOD_RESOURCES" )
450+ if (modResourcesURL != null )
451+ url = uri(modResourcesURL)
452+ }
453+ }
454+ }
455+ }
456+ }
415457 }
416458
417459 fun whenNotNull (stringProp : Property <String >, action : (String ) -> Unit ) {
0 commit comments