1818 * along with this program. If not, see <https://www.gnu.org/licenses/>.
1919 */
2020
21- import org.gradle.internal.jvm.Jvm
21+ import io.sentry.android.gradle.extensions.SentryPluginExtension
22+ import org.gradle.kotlin.dsl.configure
2223import org.jetbrains.changelog.Changelog
2324import org.jetbrains.gradle.ext.settings
2425import org.jetbrains.gradle.ext.taskTriggers
@@ -32,6 +33,7 @@ plugins {
3233 `mcdev- core`
3334 `mcdev- parsing`
3435 `mcdev- publishing`
36+ alias(libs.plugins.sentry) apply (System .getenv(" CI" ) == " true" && System .getenv(" NO_SENTRY" ) != " true" )
3537}
3638
3739val coreVersion: String by project
@@ -43,32 +45,32 @@ val testLibs: Configuration by configurations.creating {
4345
4446group = " com.demonwav.mcdev"
4547
46- val gradleToolingExtensionSourceSet: SourceSet = sourceSets.create(" gradle-tooling-extension" ) {
48+ val gradleToolingExtensionSourceSet: SourceSet = sourceSets.create(" gradle-tooling-extension" , Action < SourceSet > {
4749 configurations.named(compileOnlyConfigurationName) {
4850 extendsFrom(gradleToolingExtension)
4951 }
50- }
52+ })
5153val gradleToolingExtensionJar = tasks.register<Jar >(gradleToolingExtensionSourceSet.jarTaskName) {
5254 from(gradleToolingExtensionSourceSet.output)
5355 archiveClassifier.set(" gradle-tooling-extension" )
5456 exclude(" META-INF/plugin.xml" )
5557}
5658
57- val templatesSourceSet: SourceSet = sourceSets.create(" templates" ) {
59+ val templatesSourceSet: SourceSet = sourceSets.create(" templates" , Action < SourceSet > {
5860 resources {
5961 srcDir(" templates" )
6062 compileClasspath + = sourceSets.main.get().output
6163 }
62- }
64+ })
6365
6466val templateSourceSets: List <SourceSet > = (file(" templates" ).listFiles() ? : emptyArray()).mapNotNull { file ->
6567 if (file.isDirectory() && (file.listFiles() ? : emptyArray()).any { it.name.endsWith(" .mcdev.template.json" ) }) {
66- sourceSets.create(" templates-${file.name} " ) {
68+ sourceSets.create(" templates-${file.name} " , Action < SourceSet > {
6769 resources {
6870 srcDir(file)
6971 compileClasspath + = sourceSets.main.get().output
7072 }
71- }
73+ })
7274 } else {
7375 null
7476 }
@@ -81,9 +83,6 @@ val externalAnnotationsJar = tasks.register<Jar>("externalAnnotationsJar") {
8183}
8284
8385dependencies {
84- // Add tools.jar for the JDI API
85- implementation(files(Jvm .current().toolsJar))
86-
8786 implementation(files(gradleToolingExtensionJar))
8887
8988 implementation(libs.mixinExtras.expressions) {
@@ -99,6 +98,9 @@ dependencies {
9998 exclude(group = " org.jetbrains.kotlin" )
10099 exclude(group = " org.jetbrains.kotlinx" )
101100 }
101+ implementation(libs.sentry) {
102+ exclude(group = " org.slf4j" )
103+ }
102104
103105 intellijPlatform {
104106 intellijIdeaCommunity(libs.versions.intellij.ide, useInstaller = false )
@@ -171,20 +173,17 @@ tasks.patchPluginXml {
171173 changeNotes = changelog.render(Changelog .OutputType .HTML )
172174}
173175
174- // Compile classes to be loaded into the Gradle VM to Java 5 to match Groovy
176+ // Compile classes to be loaded into the Gradle VM to Java 8
175177// This is for maximum compatibility, these classes will be loaded into every Gradle import on all
176178// projects (not just Minecraft), so we don't want to break that with an incompatible class version.
177179tasks.named(gradleToolingExtensionSourceSet.compileJavaTaskName, JavaCompile ::class ) {
178- val java7Compiler = javaToolchains.compilerFor { languageVersion.set(JavaLanguageVersion .of(11 )) }
179- javaCompiler.set(java7Compiler)
180- options.release.set(6 )
181- options.bootstrapClasspath = files(java7Compiler.map { it.metadata.installationPath.file(" jre/lib/rt.jar" ) })
180+ options.release = 8
182181 options.compilerArgs = listOf (" -Xlint:-options" )
183182}
184183tasks.withType<GroovyCompile >().configureEach {
185184 options.compilerArgs = listOf (" -proc:none" )
186- sourceCompatibility = " 1.5 "
187- targetCompatibility = " 1.5 "
185+ sourceCompatibility = " 1.8 "
186+ targetCompatibility = " 1.8 "
188187}
189188
190189tasks.processResources {
@@ -221,6 +220,7 @@ idea {
221220license {
222221 val endings = listOf (" java" , " kt" , " kts" , " groovy" , " gradle.kts" , " xml" , " properties" , " html" , " flex" , " bnf" )
223222 exclude(" META-INF/plugin.xml" ) // https://youtrack.jetbrains.com/issue/IDEA-345026
223+ exclude(" sentry-debug-meta.properties" , " sentry-external-modules.txt" )
224224 include(endings.map { " **/*.$it " })
225225
226226 val projectDir = layout.projectDirectory.asFile
@@ -267,8 +267,8 @@ license {
267267val generateAtLexer by lexer(" AtLexer" , " com/demonwav/mcdev/platform/mcp/at/gen" )
268268val generateAtParser by parser(" AtParser" , " com/demonwav/mcdev/platform/mcp/at/gen" )
269269
270- val generateAwLexer by lexer(" AwLexer " , " com/demonwav/mcdev/platform/mcp/aw /gen" )
271- val generateAwParser by parser(" AwParser " , " com/demonwav/mcdev/platform/mcp/aw /gen" )
270+ val generateCtLexer by lexer(" CtLexer " , " com/demonwav/mcdev/platform/mcp/ct /gen" )
271+ val generateCtParser by parser(" CtParser " , " com/demonwav/mcdev/platform/mcp/ct /gen" )
272272
273273val generateNbttLexer by lexer(" NbttLexer" , " com/demonwav/mcdev/nbt/lang/gen" )
274274val generateNbttParser by parser(" NbttParser" , " com/demonwav/mcdev/nbt/lang/gen" )
@@ -291,8 +291,8 @@ val generate by tasks.registering {
291291 dependsOn(
292292 generateAtLexer,
293293 generateAtParser,
294- generateAwLexer ,
295- generateAwParser ,
294+ generateCtLexer ,
295+ generateCtParser ,
296296 generateNbttLexer,
297297 generateNbttParser,
298298 generateLangLexer,
@@ -337,3 +337,29 @@ tasks.runIde {
337337 // systemProperty("user.language", "fr")
338338 // systemProperty("user.country", "FR")
339339}
340+
341+ if (System .getenv(" CI" ) == " true" && System .getenv(" NO_SENTRY" ) != " true" ) {
342+ configure<SentryPluginExtension > {
343+ includeSourceContext = true
344+ includeDependenciesReport = true
345+ autoInstallation {
346+ enabled = false
347+ }
348+
349+ url = " https://sentry.mcdev.io/"
350+ org = " mcdev"
351+ projectName = " mcdev"
352+ authToken = providers.gradleProperty(" mcdev.sentry.token" )
353+ }
354+
355+ // Wire together some tasks to make Gradle happy
356+ tasks.named(" generateSentryBundleIdJava" ) {
357+ dependsOn(generate)
358+ }
359+ tasks.named(" sentryCollectSourcesJava" ) {
360+ dependsOn(generate)
361+ }
362+ tasks.checkLicenseMain {
363+ dependsOn(tasks.named(" generateSentryDebugMetaPropertiesjava" ), tasks.named(" collectExternalDependenciesForSentry" ))
364+ }
365+ }
0 commit comments