Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ jobs:
cache: gradle

- name: Build with Gradle 🏗️
run: ./gradlew build testOlderJavas
run: ./gradlew build testOlderJavas --warning-mode=all

- name: Upload Test Results
if: always()
Expand Down
10 changes: 5 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ buildscript {
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
url = "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "biz.aQute.bnd:biz.aQute.bnd.gradle:6.4.0"
classpath "org.xtext:xtext-gradle-plugin:4.0.0"
classpath "biz.aQute.bnd:biz.aQute.bnd.gradle:7.1.0" // https://github.com/bndtools/bnd/releases
classpath "org.xtext:xtext-gradle-plugin:4.0.0" // https://github.com/xtext/xtext-gradle-plugin/releases
}
}

Expand Down Expand Up @@ -175,7 +175,7 @@ subprojects {
}

task clean(type: Delete) {
group 'Build'
description 'Deletes the local repositories'
group = 'Build'
description = 'Deletes the local repositories'
delete 'build'
}
33 changes: 19 additions & 14 deletions gradle/java-compiler-settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -50,28 +50,28 @@ tasks.withType(JavaCompile) {
}

task sourcesJar(type: Jar, dependsOn: classes) {
group 'Build'
description 'Assembles a jar archive containing the sources.'
group = 'Build'
description = 'Assembles a jar archive containing the sources.'
archiveClassifier = 'sources'
from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
group 'Build'
description 'Assembles a jar archive containing the JavaDoc output.'
group = 'Build'
description = 'Assembles a jar archive containing the JavaDoc output.'
archiveClassifier = 'javadoc'
from javadoc.destinationDir
}

ext.signMethod = { jarfile ->
ext.signMethod = { jarfile ->
println "Signing $jarfile"
def SIGNING_SERVICE = 'https://cbi.eclipse.org/jarsigner/sign'
def STDOUT_FORMAT = ' %{size_upload} bytes uploaded, %{size_download} bytes downloaded (%{time_total} s)\\n'

ProcessBuilder curl_pb = new ProcessBuilder("curl",
ProcessBuilder curl_pb = new ProcessBuilder("curl",
"--fail", "--silent", "--show-error", "--output",
"${jarfile}-signed", "--form", "file=@${jarfile}",
"--write-out", STDOUT_FORMAT,
"--write-out", STDOUT_FORMAT,
SIGNING_SERVICE);
println String.join(" ", curl_pb.command());
curl_pb.directory(new File("${project.buildDir}"));
Expand All @@ -82,26 +82,31 @@ ext.signMethod = { jarfile ->
println curl_process.text

if (curl_process.exitValue() != 0) {
throw new GradleException("Failed to run curl");
throw new GradleException("Failed to run curl");
}

ProcessBuilder mv_pb = new ProcessBuilder("mv",
ProcessBuilder mv_pb = new ProcessBuilder("mv",
"${jarfile}-signed", jarfile)
println String.join(" ", mv_pb.command());
mv_pb.directory(new File("${project.buildDir}"));
Process mv_process = mv_pb.start()
mv_process.waitFor()

if (curl_process.exitValue() != 0) {
throw new GradleException("Failed to run mv");
throw new GradleException("Failed to run mv");
}
}

task signJar(description: 'Sign JARs with Eclipse Signing Service', group: 'Build'){
doLast {
signMethod("${project.buildDir}/libs/${project.name}-${project.version}.jar")
signMethod("${project.buildDir}/libs/${project.name}-${project.version}-sources.jar")
signMethod("${project.buildDir}/libs/${project.name}-${project.version}-javadoc.jar")
def projectBase = "${project.buildDir}/libs/${project.name}-${project.version}"

// Declare inputs/outputs for config-cache friendliness
inputs.property('projectBase', projectBase)

doLast {
signMethod("${projectBase}.jar")
signMethod("${projectBase}-sources.jar")
signMethod("${projectBase}-javadoc.jar")
}
}
signJar.dependsOn jar, sourcesJar, javadocJar
Expand Down
36 changes: 30 additions & 6 deletions gradle/manifest-gen.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
/******************************************************************************
* Copyright (c) 2016 TypeFox and others.
*
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
******************************************************************************/
apply plugin: "biz.aQute.bnd.builder"
Expand All @@ -26,27 +26,51 @@ jar.bundle.bnd (
"-savemanifest": "build/tmp/bnd/MANIFEST.MF",
)

// Workaround for Gradle 8 deprecation: avoid Bnd accessing Task.project at execution time
// by supplying needed Gradle Project properties via Providers to the Bnd builder.
// See: https://github.com/bndtools/bnd/issues/6346#issuecomment-2450176628
tasks.named('jar') {
// The bnd plugin contributes a 'bundle { }' configuration on Jar tasks
bundle {
properties.put('project.group', providers.provider { project.group?.toString() ?: '' })
properties.put('project.name', providers.provider { project.name })
properties.put('project.version', providers.provider { project.version?.toString() ?: '' })
properties.put('project.path', providers.provider { project.path })
properties.put('projectDir', providers.provider { project.projectDir?.absolutePath ?: '' })
properties.put('rootDir', providers.provider { project.rootDir?.absolutePath ?: '' })
properties.put('buildDir', providers.provider { project.buildDir?.absolutePath ?: '' })
}
}

//------------------------------------------------------
// Generate a manifest for the source bundle

def sourcesManifestFile = "$buildDir/tmp/sourcesJar/MANIFEST.MF"

task genSourcesManifest {
def projectName = project.name
def projectTitle = project.findProperty('title') ?: ''

// Declare inputs/outputs for config-cache friendliness
inputs.property('projectName', projectName)
inputs.property('projectTitle', projectTitle)
inputs.property('qualifiedVersion', qualifiedVersion)
outputs.file(sourcesManifestFile)

doLast {
def f = new File(sourcesManifestFile)
f.parentFile.mkdirs()
def writer = new PrintWriter(f)
writer.println("Manifest-Version: 1.0")
writer.println("Bundle-ManifestVersion: 2")
writer.println("Bundle-SymbolicName: ${project.name}.source")
writer.println("Bundle-SymbolicName: ${projectName}.source")
writer.println("Bundle-Version: ${qualifiedVersion}")
if (project.hasProperty('title'))
writer.println("Bundle-Name: ${project.title} Sources")
if (projectTitle)
writer.println("Bundle-Name: ${projectTitle} Sources")
else
writer.println("Bundle-Name: Sources")
writer.println("Bundle-Vendor: Eclipse LSP4J")
writer.println("Eclipse-SourceBundle: ${project.name};version=\"${qualifiedVersion}\"")
writer.println("Eclipse-SourceBundle: ${projectName};version=\"${qualifiedVersion}\"")
writer.close()
}
}
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down