diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 2849e5e..af9bc1c 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [11, 17] + java: [17, 21] steps: - uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index 6f22cbb..ad1c9a4 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ test/generate-build-solution/mps-prj/solutions/my.build/build.xml workspace.xml **/*_gen*/ .gradle +.kotlin/ diff --git a/.java-version b/.java-version index 2dbc24b..98d9bcb 100644 --- a/.java-version +++ b/.java-version @@ -1 +1 @@ -11.0 +17 diff --git a/build.gradle.kts b/build.gradle.kts index b3944f6..cb08f03 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,6 @@ import de.itemis.mps.gradle.GitBasedVersioning +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { @@ -151,9 +153,11 @@ java { } tasks.withType { - kotlinOptions.jvmTarget = "1.8" - kotlinOptions.apiVersion = kotlinApiVersion - kotlinOptions.allWarningsAsErrors = true + compilerOptions { + jvmTarget = JvmTarget.JVM_1_8 + apiVersion = KotlinVersion.fromVersion(kotlinApiVersion) + allWarningsAsErrors = true + } } apiValidation { diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile index 77a8d73..b10e746 100644 --- a/buildscript-gradle.lockfile +++ b/buildscript-gradle.lockfile @@ -1,40 +1,36 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. +com.google.code.gson:gson:2.8.9=classpath com.googlecode.java-diff-utils:diffutils:1.3.0=classpath -org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.3.1=classpath -org.gradle.kotlin:gradle-kotlin-dsl-plugins:4.3.1=classpath +org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:5.1.1=classpath +org.gradle.kotlin:gradle-kotlin-dsl-plugins:5.1.1=classpath org.jetbrains.intellij.deps:trove4j:1.0.20200330=classpath org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.7.10=classpath -org.jetbrains.kotlin:kotlin-android-extensions:1.9.22=classpath -org.jetbrains.kotlin:kotlin-assignment:1.9.22=classpath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22=classpath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.22=classpath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22=classpath -org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-native-utils:1.9.22=classpath -org.jetbrains.kotlin:kotlin-project-model:1.9.22=classpath -org.jetbrains.kotlin:kotlin-sam-with-receiver:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=classpath -org.jetbrains.kotlin:kotlin-stdlib:1.9.22=classpath -org.jetbrains.kotlin:kotlin-tooling-core:1.9.22=classpath -org.jetbrains.kotlin:kotlin-util-io:1.9.22=classpath -org.jetbrains.kotlin:kotlin-util-klib:1.9.22=classpath +org.jetbrains.kotlin:kotlin-assignment:2.0.20=classpath +org.jetbrains.kotlin:kotlin-build-statistics:2.0.20=classpath +org.jetbrains.kotlin:kotlin-build-tools-api:2.0.20=classpath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.20=classpath +org.jetbrains.kotlin:kotlin-compiler-runner:2.0.20=classpath +org.jetbrains.kotlin:kotlin-daemon-client:2.0.20=classpath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.20=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:2.0.20=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-api:2.0.20=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:2.0.20=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea:2.0.20=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-model:2.0.20=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.20=classpath +org.jetbrains.kotlin:kotlin-gradle-plugins-bom:2.0.20=classpath +org.jetbrains.kotlin:kotlin-klib-commonizer-api:2.0.20=classpath +org.jetbrains.kotlin:kotlin-native-utils:2.0.20=classpath +org.jetbrains.kotlin:kotlin-sam-with-receiver:2.0.20=classpath +org.jetbrains.kotlin:kotlin-stdlib:2.0.20=classpath +org.jetbrains.kotlin:kotlin-tooling-core:2.0.20=classpath +org.jetbrains.kotlin:kotlin-util-io:2.0.20=classpath +org.jetbrains.kotlin:kotlin-util-klib:2.0.20=classpath org.jetbrains.kotlinx.binary-compatibility-validator:org.jetbrains.kotlinx.binary-compatibility-validator.gradle.plugin:0.13.2=classpath org.jetbrains.kotlinx:binary-compatibility-validator:0.13.2=classpath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=classpath org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.6.2=classpath org.jetbrains:annotations:13.0=classpath org.ow2.asm:asm-tree:9.2=classpath diff --git a/gradle.lockfile b/gradle.lockfile index 1c904a4..83cd77c 100644 --- a/gradle.lockfile +++ b/gradle.lockfile @@ -6,26 +6,27 @@ junit:junit:4.13.2=testCompileClasspath,testImplementationDependenciesMetadata,t net.swiftzer.semver:semver:1.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.hamcrest:hamcrest-core:1.3=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-build-common:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-build-tools-impl:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.22=kotlinBuildToolsApiClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:1.9.22=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:2.0.20=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-build-common:2.0.20=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:2.0.20=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-build-tools-impl:2.0.20=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.0.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:2.0.20=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-client:2.0.20=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.20=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.20=kotlinNativeBundleConfiguration org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-reflect:1.9.22=compileClasspath,compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-script-runtime:1.9.22=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath -org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-reflect:2.0.20=compileClasspath,compileOnlyDependenciesMetadata,embeddedKotlin,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:2.0.20=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-script-runtime:2.0.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-scripting-common:2.0.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest +org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.20=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-stdlib-common:1.7.10=implementationDependenciesMetadata,runtimeClasspath org.jetbrains.kotlin:kotlin-stdlib:1.7.10=implementationDependenciesMetadata,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:1.9.22=compileClasspath,compileOnlyDependenciesMetadata,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=kotlinBuildToolsApiClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.20=compileClasspath,compileOnlyDependenciesMetadata,embeddedKotlin,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains:annotations:13.0=compileClasspath,embeddedKotlin,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath empty=annotationProcessor,apiDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,mps,runtimeOnlyDependenciesMetadata,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions,testRuntimeOnlyDependenciesMetadata diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e644113..a4b76b9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a441313..82dd18b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +distributionSha256Sum=57dafb5c2622c6cc08b993c85b7c06956a2f53536432a30ead46166dbca0f1e9 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index b740cf1..f5feea6 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -84,7 +86,8 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/gradlew.bat b/gradlew.bat index 25da30d..9d21a21 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## diff --git a/src/main/kotlin/de/itemis/mps/gradle/RunAntScript.kt b/src/main/kotlin/de/itemis/mps/gradle/RunAntScript.kt index 711e459..465bbb1 100644 --- a/src/main/kotlin/de/itemis/mps/gradle/RunAntScript.kt +++ b/src/main/kotlin/de/itemis/mps/gradle/RunAntScript.kt @@ -1,6 +1,5 @@ package de.itemis.mps.gradle; -import org.gradle.api.Action import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.file.FileCollection @@ -9,9 +8,7 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.InputFiles import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction -import org.gradle.process.JavaExecSpec import java.io.File -import java.util.* open class RunAntScript : DefaultTask() { @Input @@ -93,7 +90,7 @@ internal fun Project.runAnt(executable: Any?, workingDir: File, args: List { delete(extension.downloadDirProperty) val downloadDir = mkdir(extension.downloadDirProperty) - exec { + providers.exec { commandLine("tar", "-xzf", configuration.singleFile.absolutePath) workingDir = downloadDir } if (downloadDir.listFiles { _, name -> name.startsWith("jbr_") || name.startsWith("jbr-") }!!.any()) { - exec { + providers.exec { commandLine("sh", "-c", "mv jbr* jbr") workingDir = downloadDir } } - exec { + providers.exec { commandLine("chmod", "-R", "u+w", ".") workingDir = downloadDir } diff --git a/src/main/kotlin/de/itemis/mps/gradle/tasks/MpsMigrate.kt b/src/main/kotlin/de/itemis/mps/gradle/tasks/MpsMigrate.kt index 46a35ef..887faac 100644 --- a/src/main/kotlin/de/itemis/mps/gradle/tasks/MpsMigrate.kt +++ b/src/main/kotlin/de/itemis/mps/gradle/tasks/MpsMigrate.kt @@ -2,14 +2,12 @@ package de.itemis.mps.gradle.tasks import de.itemis.mps.gradle.TaskGroups import de.itemis.mps.gradle.launcher.MpsVersionDetection -import de.itemis.mps.gradle.runAnt import groovy.xml.MarkupBuilder import org.gradle.api.DefaultTask import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.Directory import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.RegularFileProperty -import org.gradle.api.logging.LogLevel import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.provider.MapProperty @@ -21,14 +19,13 @@ import org.gradle.kotlin.dsl.listProperty import org.gradle.kotlin.dsl.mapProperty import org.gradle.kotlin.dsl.property import org.gradle.kotlin.dsl.withGroovyBuilder -import org.gradle.platform.Architecture import java.io.File import javax.inject.Inject @UntrackedTask(because = "Operates 'in place'") abstract class MpsMigrate @Inject constructor( objectFactory: ObjectFactory, - providerFactory: ProviderFactory + private var providerFactory: ProviderFactory ) : DefaultTask() { @get:Internal @@ -107,7 +104,7 @@ abstract class MpsMigrate @Inject constructor( checkProjectLocation(dir) } - project.javaexec { + providerFactory.javaexec { mainClass.set("org.apache.tools.ant.launch.Launcher") workingDir = temporaryDir classpath = mpsAntClasspath