11import groovy.json.JsonSlurper
2+ import groovy.xml.XmlSlurper
23import java.nio.charset.StandardCharsets
34import java.security.MessageDigest
45import java.util.jar.Manifest
@@ -35,6 +36,9 @@ if (versionParts[3] != expectedTargetVersion) {
3536ext. functional_version = versionParts[0 .. 2 ]. join(' .' )
3637ext. display_version = project. mod_version
3738ext. release_tag = project. mod_version
39+ def expectedMavenGroup = ' zone.moddev.mc.orespawn'
40+ def expectedMavenArtifact = ' OreSpawn'
41+ def expectedMavenCoordinate = " ${ expectedMavenGroup} :${ expectedMavenArtifact} :${ project.version} "
3842
3943java {
4044 toolchain {
@@ -462,6 +466,7 @@ level-name=surface-integration-world
462466level-seed=zsjpxah
463467level-type=default
464468online-mode=false
469+ server-port=0
465470allow-nether=true
466471generate-structures=false
467472spawn-protection=0
@@ -671,7 +676,7 @@ tasks.named('jar', Jar) {
671676 ' Implementation-Vendor' : ' SkyBlade1978' ,
672677 ' OreSpawn-API-Version' : ' 1' ,
673678 ' FMLAT' : ' accesstransformer.cfg' ,
674- ' Maven-Artifact' : " ${ project.group } : ${ base.archivesName.get() } : ${ project.version } " ,
679+ ' Maven-Artifact' : expectedMavenCoordinate ,
675680 ' Built-On-Java' : ' 8' ,
676681 ' Built-On' : " ${ project.minecraft_version} -${ project.forge_version} "
677682 ])
@@ -727,7 +732,8 @@ def preparedReleaseDir = providers.gradleProperty('preparedReleaseDir')
727732tasks. register(' verifyReleaseConfiguration' ) {
728733 group = ' verification'
729734 doLast {
730- if (project. mod_version != ' 4.0.8.113021'
735+ if (project. mod_version != ' 4.0.16.113021'
736+ || project. mod_group != expectedMavenGroup
731737 || project. minecraft_version != ' 1.13.2'
732738 || project. forge_version != ' 25.0.223'
733739 || project. mapping_channel != ' snapshot'
@@ -740,11 +746,11 @@ tasks.register('verifyReleaseConfiguration') {
740746 throw new GradleException (' Unexpected dispatcher or Java target metadata' )
741747 }
742748 List<String > expectedPublicArtifacts = [
743- ' OreSpawn-4.0.8 .113021.jar' ,
744- ' OreSpawn-4.0.8 .113021-sources.jar' ,
745- ' OreSpawn-4.0.8 .113021-javadoc.jar'
749+ ' OreSpawn-4.0.16 .113021.jar' ,
750+ ' OreSpawn-4.0.16 .113021-sources.jar' ,
751+ ' OreSpawn-4.0.16 .113021-javadoc.jar'
746752 ]
747- if (base. archivesName. get() != ' OreSpawn '
753+ if (base. archivesName. get() != expectedMavenArtifact
748754 || expectedReleaseFiles. get(). collect { it. toString() } != expectedPublicArtifacts) {
749755 throw new GradleException (' Public artifacts must use the version-only OreSpawn filename contract' )
750756 }
@@ -759,7 +765,7 @@ tasks.register('verifyReleaseConfiguration') {
759765 ' src/main/java/zone/moddev/mc/orespawn/worldgen/LegacyMineralogyProfileMigration.java' ,
760766 ' README.md' , ' CHANGELOG.txt'
761767 ]. each { path ->
762- if (! file(path). getText(' UTF-8' ). contains(' 4.0.8 .113021' )) {
768+ if (! file(path). getText(' UTF-8' ). contains(' 4.0.16 .113021' )) {
763769 throw new GradleException (" Release identity missing from ${ path} " )
764770 }
765771 }
@@ -871,6 +877,7 @@ tasks.register('verifyReleaseArtifacts') {
871877 || manifest. getValue(' Implementation-Version' ) != project. mod_version
872878 || manifest. getValue(' OreSpawn-API-Version' ) != ' 1'
873879 || manifest. getValue(' FMLAT' ) != ' accesstransformer.cfg'
880+ || manifest. getValue(' Maven-Artifact' ) != expectedMavenCoordinate
874881 || manifest. getValue(' Implementation-Timestamp' ) != null ) {
875882 throw new GradleException (' Release manifest is incorrect or volatile' )
876883 }
@@ -969,8 +976,8 @@ def mavenUploadPassword = providers.environmentVariable('MAVEN_UPLOAD_PASSWORD')
969976publishing {
970977 publications {
971978 mavenJava(MavenPublication ) {
972- groupId = project . group . toString()
973- artifactId = base . archivesName . get()
979+ groupId = expectedMavenGroup
980+ artifactId = expectedMavenArtifact
974981 version = project. version. toString()
975982 if (preparedReleaseDir. isPresent()) {
976983 File prepared = file(preparedReleaseDir. get())
@@ -1006,6 +1013,26 @@ publishing {
10061013 }
10071014 }
10081015}
1016+ tasks. register(' verifyMavenCoordinates' ) {
1017+ group = ' verification'
1018+ description = ' Verifies the generated POM uses OreSpawn\' s mod-specific Maven namespace.'
1019+ dependsOn tasks. named(' generatePomFileForMavenJavaPublication' )
1020+ doLast {
1021+ File pomFile = layout. buildDirectory. file(
1022+ ' publications/mavenJava/pom-default.xml' ). get(). asFile
1023+ if (! pomFile. isFile()) {
1024+ throw new GradleException (" Generated Maven POM does not exist: ${ pomFile} " )
1025+ }
1026+ def pom = new XmlSlurper (false , false ). parse(pomFile)
1027+ def actual = [pom. groupId. text(), pom. artifactId. text(), pom. version. text()]
1028+ def expected = [expectedMavenGroup, expectedMavenArtifact,
1029+ project. version. toString()]
1030+ if (project. group. toString() != expectedMavenGroup || actual != expected) {
1031+ throw new GradleException (" Expected Maven coordinate ${ expected.join(':')} , " +
1032+ " found ${ actual.join(':')} " )
1033+ }
1034+ }
1035+ }
10091036tasks. register(' validateMavenReleaseCredentials' ) {
10101037 group = ' publishing'
10111038 doLast {
@@ -1021,11 +1048,14 @@ tasks.register('validateMavenReleaseCredentials') {
10211048}
10221049tasks. withType(PublishToMavenRepository ). configureEach {
10231050 dependsOn tasks. named(' validateMavenReleaseCredentials' )
1051+ dependsOn tasks. named(' verifyMavenCoordinates' )
10241052 dependsOn preparedReleaseDir. isPresent()
10251053 ? tasks. named(' verifyPreparedReleaseArtifacts' )
10261054 : tasks. named(' verifyReleaseArtifacts' )
10271055}
10281056
1057+ tasks. named(' check' ) { dependsOn tasks. named(' verifyMavenCoordinates' ) }
1058+
10291059eclipse {
10301060 classpath {
10311061 downloadSources = true
@@ -1184,6 +1214,7 @@ level-name=surface-integration-world
11841214level-seed=zsjpxah
11851215level-type=default
11861216online-mode=false
1217+ server-port=0
11871218allow-nether=true
11881219generate-structures=false
11891220spawn-protection=0
0 commit comments