@@ -2,6 +2,7 @@ import japicmp.accept.AcceptingSetupRule
2
2
import japicmp.accept.BinaryCompatRule
3
3
import me.champeau.gradle.japicmp.JapicmpTask
4
4
import org.gradle.internal.resolve.ModuleVersionNotFoundException
5
+ import java.net.URI
5
6
import java.nio.charset.StandardCharsets
6
7
import java.nio.file.Files
7
8
import java.util.*
@@ -51,19 +52,44 @@ for (projectFragment in listOf("bukkit", "cli", "core", "fabric", "neoforge", "s
51
52
dependsOn(resetChangeFileTask)
52
53
}
53
54
54
- val conf = configurations.create(" ${projectFragment} OldJar" ) {
55
- isCanBeResolved = true
55
+ val baseConf = configurations.dependencyScope(" ${projectFragment} OldJar" ) {
56
56
}
57
- val projPublication = proj.the<PublishingExtension >().publications.getByName<MavenPublication >(" maven" )
58
- conf.dependencies.add(
59
- dependencies.create(" ${projPublication.groupId} :${projPublication.artifactId} :$baseVersion " ).apply {
60
- (this as ? ModuleDependency )?.isTransitive = false
57
+ val apiConf = configurations.resolvable(" ${projectFragment} OldJarApi" ) {
58
+ extendsFrom(baseConf.get())
59
+ attributes {
60
+ attribute(
61
+ TargetJvmEnvironment .TARGET_JVM_ENVIRONMENT_ATTRIBUTE ,
62
+ objects.named(TargetJvmEnvironment .STANDARD_JVM )
63
+ )
64
+ attribute(
65
+ Usage .USAGE_ATTRIBUTE ,
66
+ objects.named(Usage .JAVA_API )
67
+ )
68
+ }
69
+ }
70
+ val runtimeConf = configurations.resolvable(" ${projectFragment} OldJarRuntime" ) {
71
+ extendsFrom(baseConf.get())
72
+ attributes {
73
+ attribute(
74
+ TargetJvmEnvironment .TARGET_JVM_ENVIRONMENT_ATTRIBUTE ,
75
+ objects.named(TargetJvmEnvironment .STANDARD_JVM )
76
+ )
77
+ attribute(
78
+ Usage .USAGE_ATTRIBUTE ,
79
+ objects.named(Usage .JAVA_RUNTIME )
80
+ )
61
81
}
62
- )
82
+ }
83
+ val projPublication = proj.the<PublishingExtension >().publications.getByName<MavenPublication >(" maven" )
84
+ baseConf.configure {
85
+ dependencies.add(
86
+ project.dependencies.create(" ${projPublication.groupId} :${projPublication.artifactId} :$baseVersion " )
87
+ )
88
+ }
63
89
val resolvedOldJar = files({
64
90
try {
65
- conf .resolvedConfiguration.rethrowFailure()
66
- conf
91
+ apiConf.get() .resolvedConfiguration.rethrowFailure()
92
+ apiConf
67
93
} catch (e: ResolveException ) {
68
94
if (e.cause is ModuleVersionNotFoundException ) {
69
95
logger.warn(" Skipping check for $projectFragment API compatibility because there is no jar to compare against" )
@@ -92,18 +118,31 @@ for (projectFragment in listOf("bukkit", "cli", "core", "fabric", "neoforge", "s
92
118
! resolvedOldJar.isEmpty
93
119
}
94
120
95
- oldClasspath.from(resolvedOldJar)
96
- newClasspath.from(proj.tasks.named(" jar" ))
121
+ oldClasspath.from(apiConf, runtimeConf)
122
+ newClasspath.from(
123
+ proj.configurations.named(" compileClasspath" ).get().incoming.artifactView {
124
+ attributes {
125
+ attribute(LibraryElements .LIBRARY_ELEMENTS_ATTRIBUTE , objects.named(LibraryElements .JAR ))
126
+ }
127
+ }.files,
128
+ proj.tasks.named(
129
+ when (projectFragment) {
130
+ " fabric" -> " remapJar"
131
+ else -> " jar"
132
+ }
133
+ )
134
+ )
97
135
onlyModified.set(false )
98
136
failOnModification.set(false ) // report does the failing (so we can accept)
99
- ignoreMissingClasses.set(true )
100
137
101
138
// Internals are not API
102
139
packageExcludes.add(" com.sk89q.worldedit*.internal*" )
103
140
// Mixins are not API
104
141
packageExcludes.add(" com.sk89q.worldedit*.mixin*" )
105
142
// Experimental is not API
106
143
packageExcludes.add(" com.sk89q.worldedit*.experimental*" )
144
+
145
+ maxWorkerHeap = " 2G"
107
146
}
108
147
109
148
checkApiCompatibility {
@@ -116,11 +155,15 @@ tasks.named<JapicmpTask>("checkCoreApiCompatibility") {
116
155
// Commands are not API
117
156
packageExcludes.add(" com.sk89q.worldedit.command*" )
118
157
}
158
+
159
+ dependencies {
160
+ " bukkitOldJar" (" io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT" )
161
+ }
119
162
tasks.named<JapicmpTask >(" checkBukkitApiCompatibility" ) {
120
163
// Internal Adapters are not API
121
164
packageExcludes.add(" com.sk89q.worldedit.bukkit.adapter*" )
122
165
}
123
- tasks.named<JapicmpTask >(" checkFabricApiCompatibility " ) {
124
- // Need to check against the reobf JAR
125
- newClasspath.setFrom(project( " :worldedit-fabric " ).tasks.named( " remapJar " ) )
166
+ tasks.named<JapicmpTask >(" checkSpongeApiCompatibility " ) {
167
+ // POM is broken
168
+ ignoreMissingClasses.set( true )
126
169
}
0 commit comments