This is an automated email from the ASF dual-hosted git repository.
jdaugherty pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git
The following commit(s) were added to refs/heads/7.0.x by this push:
new 333a5bf6b1 [skip ci] rework forge cli creation to match grails-cli
creation
333a5bf6b1 is described below
commit 333a5bf6b1d8ca62b491232123a716bde04cc235
Author: James Daugherty <[email protected]>
AuthorDate: Tue Jul 8 21:06:02 2025 -0400
[skip ci] rework forge cli creation to match grails-cli creation
---
grails-forge/grails-cli/build.gradle | 26 ++++---
grails-forge/grails-forge-cli/build.gradle | 116 +++++++++++++++--------------
2 files changed, 78 insertions(+), 64 deletions(-)
diff --git a/grails-forge/grails-cli/build.gradle
b/grails-forge/grails-cli/build.gradle
index 80056bd423..ca39496d88 100644
--- a/grails-forge/grails-cli/build.gradle
+++ b/grails-forge/grails-cli/build.gradle
@@ -71,7 +71,7 @@ apply {
TaskProvider<Jar> jarTask = tasks.named('jar', Jar)
jarTask.configure { Jar it ->
it.manifest {
- attributes 'Main-Class': project.property('startMainClass')
+ attributes 'Main-Class': findProperty('startMainClass')
}
}
@@ -126,22 +126,30 @@
project.extensions.getByType(DistributionContainer).configureEach {
from(cliStartScripts) {
into 'bin'
- fileMode = 0755
+ it.filePermissions { permissions ->
+ permissions.unix(0755)
+ }
}
from(shellCliStartScripts) {
into 'bin'
- fileMode = 0755
+ it.filePermissions { permissions ->
+ permissions.unix(0755)
+ }
}
from(forgeCliStartScripts) {
into 'bin'
- fileMode = 0755
+ it.filePermissions { permissions ->
+ permissions.unix(0755)
+ }
}
-
from(rootProject.project(':grails-forge-cli').layout.buildDirectory.file('exploded/bin/grails_forge_cli_completion'))
{
+
from(rootProject.project(':grails-forge-cli').layout.buildDirectory.file('build-completion/grails_forge_cli_completion'))
{
into 'bin'
- fileMode = 0755
+ it.filePermissions { permissions ->
+ permissions.unix(0755)
+ }
}
from(rootProject.layout.projectDirectory.file('../LICENSE')) { it.into
'' }
@@ -153,19 +161,19 @@
project.extensions.getByType(DistributionContainer).configureEach {
def distZipTask = tasks.named('distZip')
distZipTask.configure {
- dependsOn cliStartScripts, forgeCliStartScripts, shellCliStartScripts,
jarTask, shadowJarTask,
rootProject.project(':grails-forge-cli').tasks.named('exploded')
+ dependsOn cliStartScripts, forgeCliStartScripts, shellCliStartScripts,
jarTask, shadowJarTask,
rootProject.project(':grails-forge-cli').tasks.named('buildCompletion')
}
tasks.named('build').configure {
it.dependsOn(distZipTask)
}
tasks.named('assemble').configure {
- it.dependsOn cliStartScripts, forgeCliStartScripts, shellCliStartScripts,
rootProject.project(':grails-forge-cli').tasks.named('exploded')
+ it.dependsOn cliStartScripts, forgeCliStartScripts, shellCliStartScripts,
rootProject.project(':grails-forge-cli').tasks.named('buildCompletion')
}
tasks.named('installDist').configure {
it.dependsOn cliStartScripts, forgeCliStartScripts, shellCliStartScripts
}
tasks.named('distTar').configure {
- dependsOn cliStartScripts, forgeCliStartScripts, shellCliStartScripts,
jarTask, shadowJarTask,
rootProject.project(':grails-forge-cli').tasks.named('exploded')
+ dependsOn cliStartScripts, forgeCliStartScripts, shellCliStartScripts,
jarTask, shadowJarTask,
rootProject.project(':grails-forge-cli').tasks.named('buildCompletion')
}
sdkman {
diff --git a/grails-forge/grails-forge-cli/build.gradle
b/grails-forge/grails-forge-cli/build.gradle
index 7322b76209..ca51f4ed8e 100644
--- a/grails-forge/grails-forge-cli/build.gradle
+++ b/grails-forge/grails-forge-cli/build.gradle
@@ -26,7 +26,7 @@ import
org.grails.forge.internal.tasks.PicocliBuildCompletionTask
plugins {
id 'groovy'
id 'java-library'
- id 'application'
+ id 'distribution'
id 'com.gradleup.shadow'
id 'org.grails.forge.rocker'
}
@@ -62,6 +62,11 @@ configurations {
}
}
+ext {
+ cliProject = true
+ startMainClass = 'org.grails.forge.cli.Application'
+}
+
dependencies {
annotationProcessor
platform("io.micronaut:micronaut-bom:$micronautVersion")
implementation platform("io.micronaut:micronaut-bom:$micronautVersion")
@@ -103,18 +108,10 @@ dependencies {
testImplementation "org.codehaus.groovy:groovy-test:$groovyVersion"
}
-application {
- mainClass = 'org.grails.forge.cli.Application'
-}
-
rocker {
postProcessing = ['org.grails.forge.rocker.plugin.WhitespaceProcessor']
}
-startScripts {
- applicationName = 'grails-forge-cli'
-}
-
apply {
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from
rootProject.layout.projectDirectory.file('gradle/publish-config.gradle')
@@ -124,7 +121,7 @@ apply {
}
def generateManpageAsciiDoc = tasks.register('generateManpageAsciiDoc',
GenerateManpageAsciidoc) {
- mainClass = application.mainClass
+ mainClass = findProperty('startMainClass') as String
classpath.from(configurations.generateConfig,
sourceSets.main.runtimeClasspath)
outputDirectory = layout.buildDirectory.dir('generated-picocli-docs')
}
@@ -147,74 +144,83 @@ processManPages.configure { Sync it ->
def buildCompletion = tasks.register('buildCompletion',
PicocliBuildCompletionTask)
buildCompletion.configure { PicocliBuildCompletionTask it ->
- it.outputDirectory.set(layout.buildDirectory.dir('bin'))
+ it.outputDirectory.set(layout.buildDirectory.dir('build-completion'))
it.classpath.from(sourceSets.main.runtimeClasspath)
- it.mainClass.set(application.mainClass)
+ it.mainClass.set(findProperty('startMainClass'))
}
-distributions {
- main {
- contents {
- from(buildCompletion) {
- into 'bin'
- }
- from(rootProject.layout.projectDirectory.file('LICENSE')) {
- into ''
- }
- }
+TaskProvider<Jar> jarTask = tasks.named('jar', Jar)
+jarTask.configure { Jar it ->
+ it.manifest {
+ attributes 'Main-Class': project.property('startMainClass')
}
}
-tasks.named('shadowJar', ShadowJar) {
+TaskProvider<Jar> shadowJarTask = tasks.named('shadowJar', ShadowJar)
+shadowJarTask.configure { ShadowJar it ->
+ it.archiveClassifier.set('')
// TODO: This needs reworked so we have one consistent license view, for
now the disclaimer is shipped so this should suffice until this is fixed.
it.transform(ApacheLicenseResourceTransformer)
it.transform(ApacheNoticeResourceTransformer)
it.exclude('DISCLAIMER', 'license.header', 'licenses/**',
'META-INF/NOTICE.md', 'META-INF/NOTICE', 'META-INF/NOTICE.md',
'META-INF/licenses/**', 'META-INF/LICENSE.md')
- mergeServiceFiles()
+ it.mergeServiceFiles()
}
-tasks.named('shadowDistZip') {
- enabled = false
-}
-tasks.named('shadowDistTar') {
- enabled = false
+TaskProvider<CreateStartScripts> forgeCliStartScripts =
tasks.register('createForgeCliStartScripts', CreateStartScripts)
+forgeCliStartScripts.configure { CreateStartScripts t ->
+ t.dependsOn jarTask, shadowJarTask
+ t.outputDir =
layout.buildDirectory.dir('generated-forge-cli-scripts').get().asFile
+ t.applicationName = 'grails-forge-cli'
+ t.mainClass = findProperty('startMainClass') as String
+ t.classpath = files(shadowJarTask)
}
-tasks.named('distTar') {
- enabled = false
-}
+project.extensions.getByType(DistributionContainer).configureEach {
+ it.distributionBaseName.set('apache-grails')
+ it.distributionClassifier.set('incubating-bin')
+ it.contents {
+ from(shadowJarTask) {
+ into "lib"
+ }
-tasks.register('copyShadowJar', Sync) {
- from shadowJar.outputs
- into project.rootProject.layout.buildDirectory.dir('libs')
- rename { String fileName -> 'cli.jar' }
-}
+ from(layout.buildDirectory.dir('build-completion')) {
+ into 'bin'
+ it.filePermissions { permissions ->
+ permissions.unix(0755)
+ }
+ }
-tasks.register('exploded', Sync) {
- dependsOn('distZip')
- from(zipTree(distZip.outputs.files.singleFile))
- into(project.layout.buildDirectory.dir('exploded'))
- eachFile { FileCopyDetails fcd ->
- fcd.relativePath = new RelativePath(true,
fcd.relativePath.segments.drop(1))
- }
- onlyIf {
- distZip.outputs.files.singleFile.exists()
+ from(forgeCliStartScripts) {
+ into 'bin'
+ it.filePermissions { permissions ->
+ permissions.unix(0755)
+ }
+ }
+
+ from(rootProject.layout.projectDirectory.file('../LICENSE')) { it.into
'' }
+ from(rootProject.layout.projectDirectory.file('../NOTICE')) { it.into
'' }
+ from(rootProject.layout.projectDirectory.file('../INSTALL')) { it.into
'' }
+ from(rootProject.layout.projectDirectory.file('../DISCLAIMER')) {
it.into '' }
}
}
-tasks.register('cleanup', Delete) {
- delete(project.rootProject.layout.buildDirectory.file('libs/cli.jar'))
- delete(project.layout.buildDirectory.dir('dist'))
+def distZipTask = tasks.named('distZip')
+distZipTask.configure {
+ dependsOn(forgeCliStartScripts, jarTask, shadowJarTask, buildCompletion)
}
-
-tasks.named('clean') {
- dependsOn 'cleanup'
+tasks.named('distTar').configure {
+ dependsOn(forgeCliStartScripts, jarTask, shadowJarTask, buildCompletion)
}
-
-tasks.named('assemble') {
- dependsOn('exploded')
+tasks.named('build').configure {
+ it.dependsOn(distZipTask)
+}
+tasks.named('assemble').configure {
+ dependsOn(distZipTask)
+}
+tasks.named('installDist').configure {
+ it.dependsOn forgeCliStartScripts, buildCompletion
}
configurations.configureEach {