/* * Copyright 2003-2023 The IdeaVim authors * * Use of this source code is governed by an MIT-style * license that can be found in the LICENSE.txt file or at * https://opensource.org/licenses/MIT. */ plugins { java kotlin("jvm") // id("org.jlleitschuh.gradle.ktlint") id("com.google.devtools.ksp") version "2.0.21-1.0.25" kotlin("plugin.serialization") version "2.0.21" `maven-publish` antlr } val sourcesJarArtifacts by configurations.registering { attributes { attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType.SOURCES)) } } val kotlinVersion: String by project val kotlinxSerializationVersion: String by project // group 'org.jetbrains.ideavim' // version 'SNAPSHOT' repositories { mavenCentral() } ksp { arg("generated_directory", "$projectDir/src/main/resources/ksp-generated") arg("vimscript_functions_file", "engine_vimscript_functions.json") arg("ex_commands_file", "engine_ex_commands.json") arg("commands_file", "engine_commands.json") } afterEvaluate { tasks.named("kspKotlin").configure { dependsOn("generateGrammarSource") } tasks.named("kspTestKotlin").configure { enabled = false } } dependencies { testImplementation("org.junit.jupiter:junit-jupiter-api:5.12.0") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.12.0") // Temp workaround suggested in https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-faq.html#junit5-test-framework-refers-to-junit4 // Can be removed when IJPL-159134 is fixed // testRuntimeOnly("junit:junit:4.13.2") testRuntimeOnly("org.junit.vintage:junit-vintage-engine:5.12.0") // https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-test testImplementation("org.jetbrains.kotlin:kotlin-test:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion") compileOnly("org.jetbrains:annotations:26.0.2") runtimeOnly("org.antlr:antlr4-runtime:4.13.2") antlr("org.antlr:antlr4:4.13.2") ksp(project(":annotation-processors")) compileOnly(project(":annotation-processors")) compileOnly("org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:$kotlinxSerializationVersion") compileOnly(kotlin("reflect")) testImplementation("org.mockito.kotlin:mockito-kotlin:5.4.0") } tasks { test { useJUnitPlatform() } generateGrammarSource { maxHeapSize = "128m" arguments.addAll(listOf("-package", "com.maddyhome.idea.vim.parser.generated", "-visitor")) outputDirectory = file("src/main/java/com/maddyhome/idea/vim/parser/generated") } named("compileKotlin") { dependsOn("generateGrammarSource") } named("compileTestKotlin") { dependsOn("generateTestGrammarSource") } compileKotlin { kotlinOptions { apiVersion = "2.0" freeCompilerArgs = listOf("-Xjvm-default=all-compatibility") } } } // --- Linting //ktlint { // version.set("0.48.2") //} java { withSourcesJar() withJavadocJar() } artifacts.add(sourcesJarArtifacts.name, tasks.named("sourcesJar")) val spaceUsername: String by project val spacePassword: String by project val engineVersion: String by project val uploadUrl: String by project publishing { publications { create<MavenPublication>("maven") { groupId = "com.maddyhome.idea.vim" artifactId = "vim-engine" version = engineVersion from(components["java"]) } } repositories { maven { if (uploadUrl.isNotEmpty()) { url = uri(uploadUrl) credentials { username = spaceUsername password = spacePassword } } } } }