[releng] Fix Gradle build without maven tycho build
The Gradle build should work even without executing the maven tycho
build.
Bug 574772
Change-Id: I74ccc05d3b0b7c6ae87c40f308552cb5afc37551
diff --git a/releng/org.eclipse.etrice.releng/build.gradle b/releng/org.eclipse.etrice.releng/build.gradle
index 3c4b075..d6c55a7 100644
--- a/releng/org.eclipse.etrice.releng/build.gradle
+++ b/releng/org.eclipse.etrice.releng/build.gradle
@@ -1,4 +1,5 @@
plugins {
+ id 'publishing'
id "org.hidetake.ssh"
}
@@ -12,8 +13,9 @@
archives project(path: ':plugins:org.eclipse.etrice.generator.cpp', configuration: 'archive')
archives project(path: ':plugins:org.eclipse.etrice.generator.java', configuration: 'archive')
archives project(path: ':plugins:org.eclipse.etrice.generator.doc', configuration: 'archive')
-
- updates project(path: ':releng:org.eclipse.etrice.site', configuration: 'archive')
+ archives project(path: ':releng:org.eclipse.etrice.site', configuration: 'archive')
+
+ updates project(path: ':releng:org.eclipse.etrice.site', configuration: 'update')
}
def versionDir = scmVersion.version.endsWith('SNAPSHOT') ? 'nightly' : scmVersion.version
@@ -34,38 +36,26 @@
}
task assembleArtifacts(type: Sync) {
- from([configurations.archives, configurations.updates]) {
+ into assembleDir
+ from(configurations.archives) {
into 'archives'
}
- if(!configurations.updates.empty) {
- from(zipTree(configurations.updates.singleFile)) {
- into 'updates'
- }
- } else {
- doFirst {
- throw new GradleException("etrice update site is missing - execute tycho/maven 'package' first")
- }
+ from(configurations.updates) {
+ into 'updates'
}
- into assembleDir
}
-
assemble.dependsOn assembleArtifacts
-task promote {
- dependsOn assembleArtifacts
+task promote(dependsOn: assembleArtifacts) {
doLast {
ssh.run {
session(remotes.projectsStorage) {
logger.info "clean download area"
remove promoteDir
- execute "mkdir $promoteDir"
-
- logger.info "promote archives"
- put from: "$assembleDir/archives", into: promoteDir
-
- logger.info "promote update site"
- put from: "$assembleDir/updates", into: promoteDir
+ logger.info "promote artifacts"
+ put from: assembleDir, into: downloadDir
}
}
}
-}
\ No newline at end of file
+}
+publish.dependsOn promote
\ No newline at end of file
diff --git a/releng/org.eclipse.etrice.site/build.gradle b/releng/org.eclipse.etrice.site/build.gradle
index 4596834..609ce5f 100644
--- a/releng/org.eclipse.etrice.site/build.gradle
+++ b/releng/org.eclipse.etrice.site/build.gradle
@@ -4,65 +4,67 @@
configurations {
archive
+ update
}
-task updateVersionStrings {
- doLast {
- def manifestVersion = "${scmVersion.undecoratedVersion}.qualifier"
- // Replace plugin versions
- ant.replaceregexp(
- match: "Bundle-Version:\\s*[\\w.-]*",
- replace: "Bundle-Version: $manifestVersion") {
- fileset(dir: rootDir, includes: '**/MANIFEST.MF')
- }
- // Replace feature versions
- ant.replaceregexp(
- match: "(?s)<feature(.*?)version\\s*=\\s*\"[\\w.-]*\"(.*)>",
- replace: "<feature\\1version=\"$manifestVersion\"\\2>") {
- fileset(dir: rootDir, includes: '**/feature.xml')
- }
- // Replace first occurence of version tag in poms
- ant.replaceregexp(
- match: "(?s)(.*?)<version>[\\w.-]*</version>(.*)",
- replace: "\\1<version>$version</version>\\2") {
- fileset(dir: rootDir, includes: '**/pom.xml')
+// The maven tycho build is disabled unless the 'maven' property is defined because
+// maven might not be installed and we have to update the version strings in many files.
+if(project.hasProperty('maven')) {
+ // Update version strings in manifest, feature and pom files for tycho.
+ task updateVersionStrings {
+ onlyIf { tycho.enabled }
+ doLast {
+ def manifestVersion = "${scmVersion.undecoratedVersion}.qualifier"
+ // Replace plugin versions
+ ant.replaceregexp(
+ match: "Bundle-Version:\\s*[\\w.-]*",
+ replace: "Bundle-Version: $manifestVersion") {
+ fileset(dir: rootDir, includes: '**/MANIFEST.MF')
+ }
+ // Replace feature versions
+ ant.replaceregexp(
+ match: "(?s)<feature(.*?)version\\s*=\\s*\"[\\w.-]*\"(.*)>",
+ replace: "<feature\\1version=\"$manifestVersion\"\\2>") {
+ fileset(dir: rootDir, includes: '**/feature.xml')
+ }
+ // Replace first occurence of version tag in poms
+ ant.replaceregexp(
+ match: "(?s)(.*?)<version>[\\w.-]*</version>(.*)",
+ replace: "\\1<version>$version</version>\\2") {
+ fileset(dir: rootDir, includes: '**/pom.xml')
+ }
}
}
-}
-task runMaven(type: MavenExec, dependsOn: updateVersionStrings) {
- workingDir rootDir
- goals 'clean', 'verify'
- options {
- define = ['build.type' : version.endsWith('SNAPSHOT') ? 'N' : 'R']
- if(findProperty('sign') != null) {
- activateProfiles = ['sign']
+ // The 'maven' property optionally provides the path to the maven installation.
+ // The 'sign' property enables artifact signing.
+ task tycho(type: MavenExec, dependsOn: updateVersionStrings) {
+ def mavenPath = project.property('maven')
+ if(!mavenPath.empty) {
+ mavenDir = rootProject.file(mavenPath)
+ }
+ workingDir rootDir
+ goals 'clean', 'verify'
+ options {
+ define = ['build.type' : version.endsWith('SNAPSHOT') ? 'N' : 'R']
+ if(project.hasProperty('sign')) {
+ activateProfiles = ['sign']
+ }
}
}
-}
-def maven = findProperty('maven')
-if(maven != null) {
- if(!maven.empty) {
- runMaven.mavenDir = rootProject.file(maven)
+ task zipSite(type: Zip, dependsOn: tycho) {
+ archiveBaseName = project.name
+ archiveVersion = project.version
+ destinationDirectory = layout.buildDirectory
+ from layout.projectDirectory.dir('target/repository')
}
-}
-else {
- updateVersionStrings.enabled = false
- runMaven.enabled = false
-}
+ assemble.dependsOn zipSite
-def siteZipName = "${project.name}-${version}.zip"
-
-task copySiteZip(type: Copy, dependsOn: runMaven) {
- from 'target'
- include "${project.name}-*.zip"
- into buildDir
- rename { siteZipName }
-}
-
-artifacts {
- archive(layout.buildDirectory.file(siteZipName)) {
- builtBy copySiteZip
+ artifacts {
+ archive zipSite
+ update(layout.projectDirectory.dir('target/repository')) {
+ builtBy tycho
+ }
}
}
\ No newline at end of file