Avoid copying unprocessed release-info file into jar (then overwriting)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/5abfec71 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/5abfec71 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/5abfec71 Branch: refs/heads/GROOVY_2_6_X Commit: 5abfec710bda06f43876a7ad1ba52e4ce3743dda Parents: 9edb31f Author: Cedric Champeau <[email protected]> Authored: Thu Dec 14 12:41:00 2017 +0100 Committer: Cedric Champeau <[email protected]> Committed: Sun Dec 17 14:51:50 2017 +0100 ---------------------------------------------------------------------- build.gradle | 12 ++- .../groovy/gradle/ReleaseInfoGenerator.groovy | 78 ++++++++++++++++++++ gradle/assemble.gradle | 7 +- gradle/docs.gradle | 4 +- gradle/filter.gradle | 33 --------- .../META-INF/groovy-release-info.properties | 23 ------ 6 files changed, 91 insertions(+), 66 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/5abfec71/build.gradle ---------------------------------------------------------------------- diff --git a/build.gradle b/build.gradle index 4b96673..c24073e 100644 --- a/build.gradle +++ b/build.gradle @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ +import org.codehaus.groovy.gradle.ReleaseInfoGenerator buildscript { repositories { @@ -69,6 +70,7 @@ buildScanRecipes { ext.modules = { subprojects.findAll{ !['performance', 'tests-vm8'].contains(it.name) } } +ext.isReleaseVersion = !groovyVersion.toLowerCase().endsWith("snapshot") apply from: 'gradle/filter.gradle' apply from: 'gradle/indy.gradle' @@ -97,6 +99,15 @@ allprojects { maven { url 'http://dl.bintray.com/melix/thirdparty-apache' } // openbeans } + ext.buildDate = isReleaseVersion?new Date():new Date(0) + + task generateReleaseInfo(type: ReleaseInfoGenerator) { + version = rootProject.groovyVersion + bundleVersion = rootProject.groovyBundleVersion + buildDate = rootProject.buildDate + outputFile = file("$buildDir/release-info/groovy-release-info.properties") + } + apply plugin: 'groovy' apply from: "${rootProject.projectDir}/gradle/indy.gradle" if (JavaVersion.current().java7Compatible) { @@ -169,7 +180,6 @@ ext { spockVersion = '1.2-groovy-2.4-SNAPSHOT' antlr4Version = '4.7' jsr305Version = '3.0.2' - isReleaseVersion = !groovyVersion.toLowerCase().endsWith("snapshot") } dependencies { http://git-wip-us.apache.org/repos/asf/groovy/blob/5abfec71/buildSrc/src/main/groovy/org/codehaus/groovy/gradle/ReleaseInfoGenerator.groovy ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/groovy/org/codehaus/groovy/gradle/ReleaseInfoGenerator.groovy b/buildSrc/src/main/groovy/org/codehaus/groovy/gradle/ReleaseInfoGenerator.groovy new file mode 100644 index 0000000..b29193c --- /dev/null +++ b/buildSrc/src/main/groovy/org/codehaus/groovy/gradle/ReleaseInfoGenerator.groovy @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.codehaus.groovy.gradle + +import groovy.transform.CompileStatic +import org.gradle.api.DefaultTask +import org.gradle.api.tasks.TaskAction +import org.gradle.api.tasks.Input +import org.gradle.api.tasks.OutputFile + +import java.text.SimpleDateFormat + +@CompileStatic +class ReleaseInfoGenerator extends DefaultTask { + String description = "Generates the release info properties file" + + @Input + String version + + @Input + String bundleVersion + + @Input + Date buildDate + + @OutputFile + File outputFile + + @TaskAction + void generateDescriptor() { + String date = new SimpleDateFormat('dd-MMM-yyyy').format(buildDate) + String time = new SimpleDateFormat('hh:mm aa').format(buildDate) + + outputFile.withWriter('utf-8') { + it.write("""# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +ImplementationVersion=$version +BundleVersion=$bundleVersion +BuildDate=$date +BuildTime=$time +""") + } + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/groovy/blob/5abfec71/gradle/assemble.gradle ---------------------------------------------------------------------- diff --git a/gradle/assemble.gradle b/gradle/assemble.gradle index d60fab4..706953f 100644 --- a/gradle/assemble.gradle +++ b/gradle/assemble.gradle @@ -166,9 +166,7 @@ allprojects { include('antlr4-license.txt') } from("$projectDir/notices/NOTICE-JARJAR") - from('src/resources/META-INF/groovy-release-info.properties') { - filter(rootProject.propertiesFilter, org.apache.tools.ant.filters.ReplaceTokens) - } + from(generateReleaseInfo) rename { String filename -> filename == 'LICENSE-JARJAR' ? 'LICENSE' : filename == 'NOTICE-JARJAR' ? 'NOTICE' : filename } } arch.exclude '**/package-info.class' @@ -317,9 +315,6 @@ subprojects { sp -> } else { from "${rootProject.projectDir}/notices/NOTICE-BASE" } - from("${rootProject.projectDir}/src/resources/META-INF/groovy-release-info.properties") { - filter(rootProject.propertiesFilter, org.apache.tools.ant.filters.ReplaceTokens) - } rename { String filename -> filename == 'LICENSE-BASE' ? 'LICENSE' : filename == 'NOTICE-BASE' ? 'NOTICE' : filename } } exclude '**/package-info.class' http://git-wip-us.apache.org/repos/asf/groovy/blob/5abfec71/gradle/docs.gradle ---------------------------------------------------------------------- diff --git a/gradle/docs.gradle b/gradle/docs.gradle index d10b9d5..483bb23 100644 --- a/gradle/docs.gradle +++ b/gradle/docs.gradle @@ -113,9 +113,7 @@ groovydocAll groovydocSpec task docProjectVersionInfo(type: Copy) { destinationDir = file("${project(':groovy-docgenerator').sourceSets.main.java.outputDir}") into('META-INF') { - from('src/resources/META-INF/groovy-release-info.properties') { - filter(rootProject.propertiesFilter, org.apache.tools.ant.filters.ReplaceTokens) - } + from(generateReleaseInfo) } from('subprojects/groovy-docgenerator/src/main/resources') } http://git-wip-us.apache.org/repos/asf/groovy/blob/5abfec71/gradle/filter.gradle ---------------------------------------------------------------------- diff --git a/gradle/filter.gradle b/gradle/filter.gradle deleted file mode 100644 index 4a5575b..0000000 --- a/gradle/filter.gradle +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import java.text.SimpleDateFormat - -// do not use a timestamp during development, to avoid unnecessary rebuilds and cache misses -ext.buildTime = rootProject.groovyVersion.endsWith('SNAPSHOT')?new Date(0):new Date() - -ext.propertiesFilter = [ - beginToken: '#', - endToken: '#', - tokens: [ - ImplementationVersion: rootProject.groovyVersion, - BundleVersion: rootProject.groovyBundleVersion, - BuildDate: new SimpleDateFormat('dd-MMM-yyyy').format(rootProject.buildTime), - BuildTime: new SimpleDateFormat('hh:mm aa').format(rootProject.buildTime) - ] -] http://git-wip-us.apache.org/repos/asf/groovy/blob/5abfec71/src/resources/META-INF/groovy-release-info.properties ---------------------------------------------------------------------- diff --git a/src/resources/META-INF/groovy-release-info.properties b/src/resources/META-INF/groovy-release-info.properties deleted file mode 100644 index d33358c..0000000 --- a/src/resources/META-INF/groovy-release-info.properties +++ /dev/null @@ -1,23 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -ImplementationVersion=#ImplementationVersion# -BundleVersion=#BundleVersion# -BuildDate=#BuildDate# -BuildTime=#BuildTime# \ No newline at end of file
