Skip to content

Commit

Permalink
Merge pull request #210 from xtext/oehme/gradle-8
Browse files Browse the repository at this point in the history
Upgrade the plugin to support modern Gradle versions
  • Loading branch information
oehme authored Feb 25, 2023
2 parents 6767e4e + 15c7b4c commit 55477c0
Show file tree
Hide file tree
Showing 34 changed files with 330 additions and 422 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
name: Build
strategy:
matrix:
java: [1.8]
java: [11]
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
- name: Set up JDK
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- id: get_version
name: Get Version
uses: battila7/get-version-action@v2
Expand Down
7 changes: 5 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,11 @@ buildscript {

subprojects {
apply plugin: 'java'

sourceCompatibility = 1.8
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(11))
}
}

tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
Expand Down
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
minimumXtextVersion = 2.9.0
latestXtextVersion = 2.27.0
minimumGradleVersion = 4.7
latestGradleVersion = 7.2
minimumXtextVersion = 2.17.1
latestXtextVersion = 2.29.0
minimumGradleVersion = 7.1
latestGradleVersion = 8.0
systemProp.http.connectionTimeout=120000
systemProp.http.socketTimeout=120000
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import org.eclipse.xtext.resource.impl.ChunkedResourceDescriptions
import org.eclipse.xtext.resource.impl.ProjectDescription
import org.eclipse.xtext.resource.impl.ResourceDescriptionsData
import org.eclipse.xtext.util.JavaVersion
import org.eclipse.xtext.util.internal.AlternateJdkLoader
import org.eclipse.xtext.workspace.ProjectConfigAdapter
import org.eclipse.xtext.xbase.compiler.GeneratorConfig
import org.eclipse.xtext.xbase.compiler.GeneratorConfigProvider
Expand Down Expand Up @@ -191,12 +190,7 @@ class XtextGradleBuilder implements IncrementalXtextBuilder {
}

private def getJvmTypesLoader(GradleBuildRequest gradleRequest) {
val parent = if(gradleRequest.bootstrapClasspath === null || gradleRequest.bootstrapClasspath.empty) {
ClassLoader.systemClassLoader
} else {
new AlternateJdkLoader(gradleRequest.bootstrapClasspath)
}
new URLClassLoader(gradleRequest.allClasspathEntries.map[toURI.toURL], parent)
new URLClassLoader(gradleRequest.allClasspathEntries.map[toURI.toURL])
}

private def cleanup(GradleBuildRequest gradleRequest, BuildRequest request) {
Expand Down
9 changes: 6 additions & 3 deletions xtext-gradle-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,13 @@ dependencies {
implementation "org.eclipse.xtend:org.eclipse.xtend.lib:$minimumXtextVersion"
implementation 'com.google.guava:guava:27.1-jre'
implementation 'org.eclipse.platform:org.eclipse.equinox.preferences:3.6.1'
implementation 'org.eclipse.platform:org.eclipse.equinox.common:3.8.0'
implementation 'org.osgi:org.osgi.framework:1.8.0'
implementation 'org.eclipse.platform:org.eclipse.equinox.common:3.8.0'
implementation 'org.osgi:org.osgi.framework:1.8.0'
implementation('org.apache.maven:maven-artifact:3.8.2') {
transitive = false
}
protocol project(':xtext-gradle-protocol')
testImplementation 'org.ow2.asm:asm:9.4'
}

javadoc.dependsOn generateXtext
Expand Down Expand Up @@ -99,7 +100,9 @@ task latestIntegrationTest(type: Test) {
testClassesDirs = minimumIntegrationTest.testClassesDirs
systemProperty 'gradle.version', latestGradleVersion
systemProperty 'xtext.version', latestXtextVersion
enabled = JavaVersion.current().java8Compatible
javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(17))
})
}

check.dependsOn(latestIntegrationTest)
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ abstract class AbstractIntegrationTest {
@Rule public extension GradleBuildTester tester = new GradleBuildTester
protected extension ProjectUnderTest rootProject

final static ComparableVersion XTEXT_VERSION = new ComparableVersion(System.getProperty("xtext.version", "2.9.0"))
final static ComparableVersion XTEXT_VERSION = new ComparableVersion(System.getProperty("xtext.version", "2.17.1"))

@Before
def void setup() {
Expand Down Expand Up @@ -57,7 +57,7 @@ abstract class AbstractIntegrationTest {
}
def String getImplementationScope() {
if (gradleVersion >= new ComparableVersion('5')) 'implementation' else 'compile'
'implementation'
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class BuildingAMultiModulePlainLanguageProject extends AbstractIntegrationTest {
}
}
generateXtext.classpath = configurations.compile
generateXtext.classpath .from(configurations.compile)
task jar(type:Jar) {
from(xtext.sourceSets.main.files)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class BuildingAPlainLanguageProject extends AbstractIntegrationTest {
}
}
generateXtext.classpath = configurations.compile
generateXtext.classpath.from(configurations.compile)
'''
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package org.xtext.gradle.test

import java.util.zip.ZipFile
import org.apache.maven.artifact.versioning.ComparableVersion
import org.junit.Test

import static org.junit.Assert.*
import static org.junit.Assume.*

class BuildingASimpleXtendProject extends AbstractXtendIntegrationTest {

Expand Down Expand Up @@ -161,7 +159,7 @@ class BuildingASimpleXtendProject extends AbstractXtendIntegrationTest {
@Test
def void theOutputFolderCanBeConfigured() {
buildFile << '''
sourceSets.main.xtendOutputDir = "build/xtend-gen"
sourceSets.main.xtend.outputDir = "build/xtend-gen"
'''
// given
file('src/main/java/com/example/HelloWorld.xtend').content = '''
Expand Down Expand Up @@ -252,7 +250,6 @@ class BuildingASimpleXtendProject extends AbstractXtendIntegrationTest {

@Test
def void defaultMethodsAreInherited() {
assumeTrue(xtextVersion >= new ComparableVersion("2.11"))
file('src/main/java/I.java').content = '''
interface I {
default void foo() {
Expand All @@ -274,7 +271,7 @@ class BuildingASimpleXtendProject extends AbstractXtendIntegrationTest {
'''
buildFile << '''
task sourceJar(type: Jar) {
classifier = 'sources'
archiveClassifier = 'sources'
from(sourceSets.main.allSource)
}
'''
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import org.junit.rules.TemporaryFolder
import static org.junit.Assert.*

class GradleBuildTester extends ExternalResource {
public final static ComparableVersion GRADLE_VERSION = new ComparableVersion(System.getProperty("gradle.version", "4.3"))
public final static ComparableVersion GRADLE_VERSION = new ComparableVersion(System.getProperty("gradle.version", "7.1"))
val temp = new TemporaryFolder
ProjectUnderTest rootProject
GradleRunner gradle
Expand Down Expand Up @@ -52,8 +52,9 @@ class GradleBuildTester extends ExternalResource {
#[
"-Dhttp.connectionTimeout=120000",
"-Dhttp.socketTimeout=120000",
"-s"
] + if(GRADLE_VERSION >= new ComparableVersion("5.6")) #["--warning-mode=fail"] else #[]
"-s",
"--warning-mode=fail"
]
}

def void setContent(File file, CharSequence content) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package org.xtext.gradle.test

import org.junit.Assume
import org.junit.Test
import org.objectweb.asm.ClassReader
import org.objectweb.asm.ClassVisitor
import org.objectweb.asm.Opcodes
import org.xtext.gradle.protocol.GradleInstallDebugInfoRequest.SourceInstaller

import static org.junit.Assert.*
import org.junit.Assume

class WhenConfiguringTheDebuggerSupport extends AbstractIntegrationTest {

Expand Down Expand Up @@ -74,7 +74,7 @@ class WhenConfiguringTheDebuggerSupport extends AbstractIntegrationTest {
val classFile = file("build/classes/java/main/HelloWorld.class")

classFile.shouldExist
new ClassReader(classFile.content).accept(new ClassVisitor(Opcodes.ASM5) {
new ClassReader(classFile.content).accept(new ClassVisitor(Opcodes.ASM9) {
override visitSource(String name, String info) {
sourceVisitor.apply(name, info)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package org.xtext.gradle.test

import org.apache.maven.artifact.versioning.ComparableVersion
import org.gradle.api.tasks.compile.JavaCompile
import org.junit.Assume
import org.junit.Test

class WhenSettingsChange extends AbstractXtendIntegrationTest {
Expand Down Expand Up @@ -34,7 +32,6 @@ class WhenSettingsChange extends AbstractXtendIntegrationTest {

@Test
def void shouldRecompileWhenLanguageSettingsChange() {
Assume.assumeTrue(gradleVersion >= new ComparableVersion("5"))
// when
buildFile.content = buildFile.contentAsString.
replace('''javaSourceLevel = "1.7"''', '''javaSourceLevel = "1.8"''')
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package org.xtext.gradle.test

import org.apache.maven.artifact.versioning.ComparableVersion
import org.junit.Test

class WhenUsingXtendForTestsOnly extends AbstractXtendIntegrationTest {

override getImplementationScope() {
if (gradleVersion >= new ComparableVersion('5')) 'testImplementation' else 'testCompile'
'testImplementation'
}

@Test
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,45 +2,40 @@ package org.xtext.gradle

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.internal.plugins.DslObject
import org.gradle.api.plugins.ExtensionAware
import org.gradle.api.plugins.JavaBasePlugin
import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.plugins.JavaPluginExtension
import org.xtext.gradle.protocol.GradleInstallDebugInfoRequest.SourceInstaller
import org.xtext.gradle.tasks.XtextExtension
import org.xtext.gradle.tasks.internal.XtendSourceSet
import org.xtext.gradle.tasks.internal.XtendSourceDirectorySet

class XtendLanguageBasePlugin implements Plugin<Project> {

Project project
XtextExtension xtext

override apply(Project project) {
this.project = project
project.apply[
project.apply [
plugin(JavaBasePlugin)
plugin(XtextBuilderPlugin)
]
xtext = project.extensions.getByType(XtextExtension)
val xtext = project.extensions.getByType(XtextExtension)
xtext.sourceSets.all [
project.dependencies.add(qualifyConfigurationName('xtextTooling'), 'org.eclipse.xtend:org.eclipse.xtend.core')
project.dependencies.add(qualifyConfigurationName('xtextTooling'),
'org.eclipse.xtend:org.eclipse.xtend.core')
]
val xtend = xtext.languages.create("xtend") [
setup = "org.eclipse.xtend.core.XtendStandaloneSetup"
setup.set("org.eclipse.xtend.core.XtendStandaloneSetup")
generator.outlet => [
producesJava = true
producesJava.set(true)
]
debugger => [
sourceInstaller = SourceInstaller.SMAP
sourceInstaller.set(SourceInstaller.SMAP.name)
]
]
project.extensions.add("xtend", xtend)
val java = project.convention.getPlugin(JavaPluginConvention)
val java = project.extensions.getByType(JavaPluginExtension)
java.sourceSets.all [ sourceSet |
val xtendSourceSet = new XtendSourceSet(
xtext.sourceSets.getAt(sourceSet.name),
xtend.generator.outlet
)
new DslObject(sourceSet).convention.plugins.put("xtend", xtendSourceSet)
val xtendSources = xtext.sourceSets.getAt(sourceSet.name)
val xtendGen = xtend.generator.outlet;
(sourceSet as ExtensionAware).extensions.create("xtend", XtendSourceDirectorySet, xtendSources, xtendGen)
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ class XtendLanguagePlugin implements Plugin<Project> {
project.apply[plugin(XtendLanguageBasePlugin)]
}

}
}
Loading

0 comments on commit 55477c0

Please sign in to comment.