diff --git a/build.gradle b/build.gradle index 16e0df381af..4a96394b39d 100644 --- a/build.gradle +++ b/build.gradle @@ -105,8 +105,6 @@ subprojects { cacheChangingModulesFor(cacheHours, 'hours') } } - - apply from: rootProject.layout.projectDirectory.file('gradle/dependency-licenses.gradle') } apply { diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index ca7f53f7f20..97ef6d02863 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -63,15 +63,12 @@ repositories { dependencies { implementation platform("org.apache.grails:grails-gradle-bom:${gradleProperties.projectVersion}") implementation 'org.apache.grails.gradle:grails-publish' - implementation "gradle.plugin.com.hierynomus.gradle.plugins:license-gradle-plugin:${gradleProperties.gradleLicensePluginVersion}", { - // Due to https://github.com/hierynomus/license-gradle-plugin/issues/161, spring must be excluded - exclude group: 'org.springframework', module: 'spring-core' - } implementation 'cloud.wondrify:asset-pipeline-gradle' implementation 'org.apache.grails:grails-docs-core' implementation 'org.apache.grails:grails-gradle-plugins' implementation 'org.asciidoctor:asciidoctor-gradle-jvm' implementation 'org.springframework.boot:spring-boot-gradle-plugin' implementation "org.nosphere.apache.rat:org.nosphere.apache.rat.gradle.plugin:${gradleProperties.apacheRatVersion}" + implementation "org.cyclonedx.bom:org.cyclonedx.bom.gradle.plugin:${gradleProperties.gradleCycloneDxPluginVersion}" implementation "org.gradle.crypto.checksum:org.gradle.crypto.checksum.gradle.plugin:${gradleProperties.gradleChecksumPluginVersion}" } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 986a4d5f1ed..31b231d02c4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -47,7 +47,8 @@ yakworksHibernateGroovyProxyVersion=1.1 # Build dependency versions not managed by BOMs apacheRatVersion=0.8.1 gradleChecksumPluginVersion=1.4.0 -gradleLicensePluginVersion=0.16.1 +# note: the cyclonedx 3.0.0-alpha-1 still does not set the project correctly, so we must use the older version +gradleCycloneDxPluginVersion=2.4.0 # micronaut libraries not in the bom due to the potential for spring mismatches micronautPlatformVersion=4.9.2 diff --git a/gradle/dependency-licenses.gradle b/gradle/dependency-licenses.gradle deleted file mode 100644 index 24c7f836969..00000000000 --- a/gradle/dependency-licenses.gradle +++ /dev/null @@ -1,30 +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 - * - * https://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. - */ - -apply plugin: 'com.github.hierynomus.license-report' - -List licenseExclusions = rootProject.subprojects.collect { - "${it.group}:${it.findProperty('pomArtifactId') ?: it.name}:${rootProject.projectVersion}" as String -} - -downloadLicenses { - includeProjectDependencies = true - dependencyConfiguration = 'runtimeClasspath' - excludeDependencies = licenseExclusions -} \ No newline at end of file diff --git a/gradle/java-config.gradle b/gradle/java-config.gradle index 46cb1956add..46b05c1914c 100644 --- a/gradle/java-config.gradle +++ b/gradle/java-config.gradle @@ -44,6 +44,11 @@ tasks.withType(GroovyCompile).configureEach { // Grails determines the grails version via the META-INF/MANIFEST.MF file // Note: we exclude attributes such as Built-By, Build-Jdk, Created-By to ensure the build is reproducible. tasks.withType(Jar).configureEach { + if (project.findProperty('skipJavaComponent')) { + it.enabled = false + return + } + manifest.attributes( 'Implementation-Title': 'Apache Grails', 'Implementation-Version': grailsVersion, diff --git a/gradle/publish-config.gradle b/gradle/publish-config.gradle index 6552273cc68..b65793ad47d 100644 --- a/gradle/publish-config.gradle +++ b/gradle/publish-config.gradle @@ -30,29 +30,36 @@ extensions.configure(GrailsPublishExtension) { it.developers = findProperty('pomDevelopers') as Map ?: [graemerocher: 'Graeme Rocher'] it.pomCustomization = findProperty('pomCustomization') as Closure it.publishTestSources = findProperty('pomPublishTestSources') ?: false - it.testRepositoryPath = rootProject.layout.buildDirectory.dir('local-maven') + it.testRepositoryPath = findProperty('skipJavaComponent') ? null : rootProject.layout.projectDirectory.dir('../build/local-maven') } -tasks.withType(Jar).configureEach { - if(it.archiveClassifier.getOrNull() != 'javadoc') { - from(rootProject.layout.projectDirectory.file('DISCLAIMER')) { - into('META-INF') - } +if (findProperty('skipJavaComponent')) { + // since the publish plugin won't register + tasks.register('publishAllPublicationsToTestCaseMavenRepoRepository') +} - def projectLicense = layout.projectDirectory.file('src/main/resources/META-INF/LICENSE') - if (!projectLicense.asFile.exists()) { - def basicLicense = rootProject.layout.projectDirectory.file('licenses/LICENSE-Apache-2.0.txt') - from(basicLicense) { +if (!findProperty('skipJavaComponent')) { + tasks.withType(Jar).configureEach { + if (it.archiveClassifier.getOrNull() != 'javadoc') { + from(rootProject.layout.projectDirectory.file('DISCLAIMER')) { into('META-INF') - rename { 'LICENSE' } } - } - def projectNotice = layout.projectDirectory.file('src/main/resources/META-INF/NOTICE') - if (!projectNotice.asFile.exists()) { - def basicNotice = rootProject.layout.projectDirectory.file('grails-core/src/main/resources/META-INF/NOTICE') - from(basicNotice) { - into('META-INF') + def projectLicense = layout.projectDirectory.file('src/main/resources/META-INF/LICENSE') + if (!projectLicense.asFile.exists()) { + def basicLicense = rootProject.layout.projectDirectory.file('licenses/LICENSE-Apache-2.0.txt') + from(basicLicense) { + into('META-INF') + rename { 'LICENSE' } + } + } + + def projectNotice = layout.projectDirectory.file('src/main/resources/META-INF/NOTICE') + if (!projectNotice.asFile.exists()) { + def basicNotice = rootProject.layout.projectDirectory.file('grails-core/src/main/resources/META-INF/NOTICE') + from(basicNotice) { + into('META-INF') + } } } } diff --git a/gradle/sbom-config.gradle b/gradle/sbom-config.gradle new file mode 100644 index 00000000000..d856d99e168 --- /dev/null +++ b/gradle/sbom-config.gradle @@ -0,0 +1,250 @@ +/* + * 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 + * + * https://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 groovy.json.JsonOutput +import groovy.json.JsonSlurper +import org.cyclonedx.gradle.CycloneDxTask +import org.cyclonedx.model.ExternalReference +import org.cyclonedx.model.LicenseChoice +import org.cyclonedx.model.License +import org.cyclonedx.model.OrganizationalContact +import org.cyclonedx.model.OrganizationalEntity +import org.cyclonedx.model.Component + +import java.nio.charset.StandardCharsets +import java.time.format.DateTimeFormatter +import java.time.temporal.ChronoUnit + +apply plugin: 'org.cyclonedx.bom' + +project.ext.setProperty('sbomOutputLocation', project.layout.buildDirectory.file("${findProperty('pomArtifactId') ?: project.name}-${projectVersion}-sbom.json")) + +def sbomTask = tasks.named('cyclonedxBom', CycloneDxTask) +sbomTask.configure { CycloneDxTask it -> + // the 2.x version of Cyclonedx uses a legacy syntax & helpers for setting inputs so the syntax below + // is required until the 3.x version is GA + it.setProjectType(findProperty('sbomProjectType')?.toString() ?: Component.Type.FRAMEWORK.name()) + it.@componentName.set(findProperty('pomArtifactId')?.toString() ?: project.name) + it.@organizationalEntity.set(new OrganizationalEntity().tap { + name = 'Apache Software Foundation' + urls = ['https://www.apache.org/', 'https://security.apache.org/'] + addContact(new OrganizationalContact().tap { + name = 'Apache Grails Development Team' + email = 'dev@grails.apache.org' + }) + }) + it.@licenseChoice.set(new LicenseChoice().tap { + addLicense(new License().tap { + name = 'Apache-2.0' + url = 'https://www.apache.org/licenses/LICENSE-2.0.txt' + }) + }) + + it.@externalReferences.set([ + new ExternalReference().tap { + url = 'https://grails.apache.org/' + type = ExternalReference.Type.WEBSITE + } + ]) + + // sboms are published for the purposes of vulnerability analysis so only include the runtime classpath + it.@includeConfigs.set(['runtimeClasspath']) + it.@skipConfigs.set(['compileClasspath', 'testRuntimeClasspath']) + + // turn off license text since it's base64 encoded & will inflate the jar sizes + it.@includeLicenseText.set(false) + + // disable xml output + it.xmlOutput.unsetConvention() + + def sbomOutputLocation = findProperty('sbomOutputLocation') + it.jsonOutput.set(sbomOutputLocation.get()) + it.outputs.file(sbomOutputLocation) + + // cyclonedx does not support "choosing" the license placed in the sbom + // see: https://github.com/CycloneDX/cyclonedx-gradle-plugin/issues/16 + it.doLast { + // ordered so that first value is the most preferred, this list is from https://www.apache.org/legal/resolved.html + def preferredLicenses = ['Apache-2.0', 'EPL-1.0', 'BSD-3-Clause', 'EPL-2.0', 'MIT', 'MIT-0', '0BSD', 'UPL-1.0', + 'CC0-1.0', 'ICU', 'Xnet', 'NCSA', 'W3C', 'Zlib', 'AFL-3.0', 'MS-PL', 'PSF-2.0', 'APAFML', + 'BSL-1.0', 'WTFPL', 'Unlicense', 'HPND', 'EPICS', 'TCL'] + + // licenses are standardized @ https://spdx.org/licenses/ + def licenses = [ + 'Apache-2.0' : [ + id : 'Apache-2.0', + url : 'https://www.apache.org/licenses/LICENSE-2.0' + ], + 'BSD-2-Clause': [ + id : 'BSD-2-Clause', + url : 'https://opensource.org/license/bsd-3-clause/' + ], + 'BSD-3-Clause': [ + id : 'BSD-3-Clause', + url : 'https://opensource.org/license/bsd-3-clause/' + ], + // Variant of Apache 1.1 license. Approved by legal LEGAL-707 + 'OpenSymphony' : [ + // id is optional and the opensymphony license doesn't have an SPDX id + name: 'The OpenSymphony Software License, Version 1.1', + url: 'https://raw.githubusercontent.com/sitemesh/sitemesh2/refs/heads/master/LICENSE.txt' + ], + 'UPL-1.0' : [ + id: 'UPL-1.0', + url: 'https://oss.oracle.com/licenses/upl/' + ], + + ] + + def licenseMapping = [ + 'pkg:maven/org.antlr/antlr4-runtime@4.7.2?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205 + 'pkg:maven/jline/jline@2.14.6?type=jar' : 'BSD-2-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205 + 'pkg:maven/org.jline/jline@3.23.0?type=jar' : 'BSD-2-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205 + 'pkg:maven/org.liquibase.ext/liquibase-hibernate5@4.27.0?type=jar': 'Apache-2.0', // maps incorrectly because of https://github.com/liquibase/liquibase/issues/2445 & the base pom does not define a license + 'pkg:maven/com.oracle.coherence.ce/coherence-bom@25.03.1?type=pom': 'UPL-1.0', // does not have map based on license id + 'pkg:maven/com.oracle.coherence.ce/coherence-bom@22.06.2?type=pom': 'UPL-1.0', // does not have map based on license id + 'pkg:maven/opensymphony/sitemesh@2.6.0?type=jar' : 'OpenSymphony', // custom license approved by legal LEGAL-707 + 'pkg:maven/org.jruby/jzlib@1.1.5?type=jar' : 'BSD-3-Clause'// https://web.archive.org/web/20240822213507/http://www.jcraft.com/jzlib/LICENSE.txt shows it's a 3 clause + ] + + // we don't distribute these so these licenses are considered acceptable, but we still prefer ASF licenses. + // Require a whitelist of any case of category X licenses to prevent accidental inclusion in a distributed artifact + // this list will need to be updated anytime we change versions so we can revise the licenses + def licenseExceptions = [ + 'grails-data-hibernate5-core' : [ + 'pkg:maven/org.hibernate.common/hibernate-commons-annotations@5.1.2.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7 + 'pkg:maven/org.hibernate/hibernate-core-jakarta@5.6.15.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7 + ], + 'grails-data-hibernate5' : [ + 'pkg:maven/org.hibernate.common/hibernate-commons-annotations@5.1.2.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7 + 'pkg:maven/org.hibernate/hibernate-core-jakarta@5.6.15.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7 + ], + 'grails-data-hibernate5-spring-boot': [ + 'pkg:maven/org.hibernate.common/hibernate-commons-annotations@5.1.2.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7 + 'pkg:maven/org.hibernate/hibernate-core-jakarta@5.6.15.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7 + ], + 'grails-data-hibernate5-dbmigration': [ + 'pkg:maven/javax.xml.bind/jaxb-api@2.3.1?type=jar': 'CDDL-1.1', // api export + ], + ] + + def pickLicense = { String bomRef, List licenseChoices -> + if (!bomRef) { + throw new GradleException("No bomRef found for a dependency of ${project.name}, cannot pick license") + } + + logger.info('Picking license for {} from {} choices', bomRef, licenseChoices.size()) + if (licenseMapping.containsKey(bomRef)) { + // There are several reasons that cyclone will get the license wrong, usually due to upstream not publishing information or publishing it incorrectly + // see the licenseMapping map above for details + def licenseId = licenseMapping[bomRef] + logger.lifecycle('Forcing license for {} to {}', bomRef, licenseId) + + def licenseBlock = licenses[licenseId] + if (!licenseBlock) { + throw new GradleException("Cannot find license information for id ${licenseId} to use for bomRef ${bomRef} in project ${project.name}") + } + + return licenseBlock + } + + if (!(licenseChoices instanceof List) || licenseChoices.isEmpty()) { + throw new GradleException("No License was found for dependency: ${bomRef} in project ${project.name}") + } + + def licenseIds = licenseChoices.findAll { it instanceof Map && it.license instanceof Map && it.license.id } + def foundLicense = preferredLicenses.find { p -> licenseIds.any { it.license.id == p } } + if (foundLicense) { + return licenseIds.find { it.license.id == foundLicense } + } + + def defaultLicense = licenseChoices[0] // pick the first one found + def defaultLicenseId = defaultLicense.license.id as String + if (defaultLicenseId == null) { + throw new GradleException("Could not determine License id for dependency: ${bomRef} in project ${project.name} for value ${defaultLicense}") + } + if (!(defaultLicenseId in preferredLicenses)) { + def projectLicenseExemptions = licenseExceptions[project.name] ?: [:] + def permittedLicense = projectLicenseExemptions.get(bomRef) == defaultLicenseId + if (!permittedLicense) { + throw new GradleException("Unpermitted License found for bom dependency: ${bomRef} in project ${project.name} : ${defaultLicenseId}") + } + } + + return defaultLicense + } + + // json schema is documented here: https://cyclonedx.org/docs/1.6/json/ + def rewriteSbom = { File f -> + def bom = new JsonSlurper().parse(f) + + // timestamp is not reproducible: https://github.com/CycloneDX/cyclonedx-gradle-plugin/issues/292 + bom.metadata.timestamp = DateTimeFormatter.ISO_INSTANT.format(buildDate.truncatedTo(ChronoUnit.SECONDS)) + + // components[*].licenses + def comps = (bom instanceof Map && bom.components instanceof List) ? bom.components : [] + comps.each { c -> + if (c instanceof Map && c.licenses instanceof List && !c.licenses.isEmpty()) { + def chosen = pickLicense(c['bom-ref'] as String, c.licenses as List) + if (chosen != null) { + c.licenses = [chosen] + } + } + } + + // force the serialNumber to be reproducible by removing it & recalculating + bom.serialNumber = '' + String withOutSerial = JsonOutput.prettyPrint(JsonOutput.toJson(bom)) + def uuid = UUID.nameUUIDFromBytes(withOutSerial.getBytes(StandardCharsets.UTF_8.name())) + def urn = "urn:uuid:${uuid.toString()}" as String + bom.serialNumber = urn + + f.setText(JsonOutput.prettyPrint(JsonOutput.toJson(bom)), StandardCharsets.UTF_8.name()) + + logger.info('Rewrote JSON SBOM ({}) to pick preferred license', project.relativePath(f)) + } + + sbomOutputLocation.get().with { rewriteSbom(it.asFile) } + } +} + +// for now, we only publish the sbom inside of the binary jar (our bom projects won't have a jar file) +pluginManager.withPlugin('java') { + tasks.named('assemble').configure { + dependsOn('cyclonedxBom') + } + + if (!project.findProperty('skipJavaComponent')) { + tasks.named('jar').configure { Jar jar -> + jar.dependsOn('cyclonedxBom') + + jar.from(findProperty('sbomOutputLocation')) { + into('META-INF') + rename { + 'sbom.json' + } + } + + jar.manifest { + attributes('Sbom-Location': 'META-INF/sbom.json') + attributes('Sbom-Format': 'CycloneDX') + } + } + } +} diff --git a/grails-async/core/build.gradle b/grails-async/core/build.gradle index a9f35631a1e..232e9f93b1d 100644 --- a/grails-async/core/build.gradle +++ b/grails-async/core/build.gradle @@ -50,5 +50,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-async/gpars/build.gradle b/grails-async/gpars/build.gradle index daeb08a9222..029f1010eb6 100644 --- a/grails-async/gpars/build.gradle +++ b/grails-async/gpars/build.gradle @@ -50,5 +50,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-async/plugin/build.gradle b/grails-async/plugin/build.gradle index f4078b32cfe..e6ce2a446b1 100644 --- a/grails-async/plugin/build.gradle +++ b/grails-async/plugin/build.gradle @@ -60,5 +60,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-async/rxjava/build.gradle b/grails-async/rxjava/build.gradle index 00a583c67fb..38c28e84b27 100644 --- a/grails-async/rxjava/build.gradle +++ b/grails-async/rxjava/build.gradle @@ -46,5 +46,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-async/rxjava2/build.gradle b/grails-async/rxjava2/build.gradle index 9f1cff3f12a..ddcaf3bb718 100644 --- a/grails-async/rxjava2/build.gradle +++ b/grails-async/rxjava2/build.gradle @@ -46,5 +46,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-async/rxjava3/build.gradle b/grails-async/rxjava3/build.gradle index 2cd8942622e..7bd5445bf70 100644 --- a/grails-async/rxjava3/build.gradle +++ b/grails-async/rxjava3/build.gradle @@ -46,5 +46,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-bom/build.gradle b/grails-bom/build.gradle index 3824ea2c98f..88b8d7fb96f 100644 --- a/grails-bom/build.gradle +++ b/grails-bom/build.gradle @@ -202,4 +202,5 @@ ext { apply { from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } diff --git a/grails-bootstrap/build.gradle b/grails-bootstrap/build.gradle index 15017ca16b2..a6ae77322a2 100644 --- a/grails-bootstrap/build.gradle +++ b/grails-bootstrap/build.gradle @@ -84,5 +84,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-cache/build.gradle b/grails-cache/build.gradle index 89e5a3e35e3..0b16f0a7744 100644 --- a/grails-cache/build.gradle +++ b/grails-cache/build.gradle @@ -63,6 +63,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } diff --git a/grails-codecs-core/build.gradle b/grails-codecs-core/build.gradle index 662060b41dd..ac7e542a381 100644 --- a/grails-codecs-core/build.gradle +++ b/grails-codecs-core/build.gradle @@ -57,5 +57,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-codecs/build.gradle b/grails-codecs/build.gradle index 26eab116b06..0815e1cf1ef 100644 --- a/grails-codecs/build.gradle +++ b/grails-codecs/build.gradle @@ -67,5 +67,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-common/build.gradle b/grails-common/build.gradle index e30f95621aa..378584eef77 100644 --- a/grails-common/build.gradle +++ b/grails-common/build.gradle @@ -58,5 +58,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-console/build.gradle b/grails-console/build.gradle index a83ac41a461..55d6a5ed6ac 100644 --- a/grails-console/build.gradle +++ b/grails-console/build.gradle @@ -70,4 +70,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-controllers/build.gradle b/grails-controllers/build.gradle index 3d88b08a4ef..d301da5c835 100644 --- a/grails-controllers/build.gradle +++ b/grails-controllers/build.gradle @@ -77,5 +77,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-converters/build.gradle b/grails-converters/build.gradle index 182b6d6ed7f..7012f9dedec 100644 --- a/grails-converters/build.gradle +++ b/grails-converters/build.gradle @@ -76,5 +76,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-core/build.gradle b/grails-core/build.gradle index 79a030fc6e1..cc8f5277f71 100644 --- a/grails-core/build.gradle +++ b/grails-core/build.gradle @@ -95,5 +95,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-data-hibernate5/boot-plugin/build.gradle b/grails-data-hibernate5/boot-plugin/build.gradle index 52e6497737d..3e9993d2346 100644 --- a/grails-data-hibernate5/boot-plugin/build.gradle +++ b/grails-data-hibernate5/boot-plugin/build.gradle @@ -62,5 +62,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/hibernate5-test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-data-hibernate5/core/build.gradle b/grails-data-hibernate5/core/build.gradle index db4d955201b..9085f64c265 100644 --- a/grails-data-hibernate5/core/build.gradle +++ b/grails-data-hibernate5/core/build.gradle @@ -92,6 +92,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/hibernate5-test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-data-tck-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-data-hibernate5/dbmigration/build.gradle b/grails-data-hibernate5/dbmigration/build.gradle index 790cc41c23a..792e0683f8d 100644 --- a/grails-data-hibernate5/dbmigration/build.gradle +++ b/grails-data-hibernate5/dbmigration/build.gradle @@ -109,6 +109,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/hibernate5-test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } diff --git a/grails-data-hibernate5/grails-plugin/build.gradle b/grails-data-hibernate5/grails-plugin/build.gradle index 892d01db72f..8b05552ffb0 100644 --- a/grails-data-hibernate5/grails-plugin/build.gradle +++ b/grails-data-hibernate5/grails-plugin/build.gradle @@ -88,6 +88,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/hibernate5-test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } \ No newline at end of file diff --git a/grails-data-mongodb/boot-plugin/build.gradle b/grails-data-mongodb/boot-plugin/build.gradle index 84074347a87..d0e5ee88053 100644 --- a/grails-data-mongodb/boot-plugin/build.gradle +++ b/grails-data-mongodb/boot-plugin/build.gradle @@ -107,5 +107,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/mongodb-test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } \ No newline at end of file diff --git a/grails-data-mongodb/bson/build.gradle b/grails-data-mongodb/bson/build.gradle index dda142f5671..dcd3ea88393 100644 --- a/grails-data-mongodb/bson/build.gradle +++ b/grails-data-mongodb/bson/build.gradle @@ -101,5 +101,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/mongodb-test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } \ No newline at end of file diff --git a/grails-data-mongodb/core/build.gradle b/grails-data-mongodb/core/build.gradle index 6c89d156661..1a46cbc7412 100644 --- a/grails-data-mongodb/core/build.gradle +++ b/grails-data-mongodb/core/build.gradle @@ -154,6 +154,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/mongodb-forked-test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-data-tck-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } \ No newline at end of file diff --git a/grails-data-mongodb/ext/build.gradle b/grails-data-mongodb/ext/build.gradle index e9ba4cd7626..7a91a3a342a 100644 --- a/grails-data-mongodb/ext/build.gradle +++ b/grails-data-mongodb/ext/build.gradle @@ -90,5 +90,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/mongodb-test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-data-mongodb/grails-plugin/build.gradle b/grails-data-mongodb/grails-plugin/build.gradle index 4d633438027..44aa6964181 100644 --- a/grails-data-mongodb/grails-plugin/build.gradle +++ b/grails-data-mongodb/grails-plugin/build.gradle @@ -132,6 +132,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/mongodb-test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } diff --git a/grails-data-mongodb/gson-templates/build.gradle b/grails-data-mongodb/gson-templates/build.gradle index d821432f531..77d121996e7 100644 --- a/grails-data-mongodb/gson-templates/build.gradle +++ b/grails-data-mongodb/gson-templates/build.gradle @@ -72,5 +72,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/mongodb-test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-data-simple/build.gradle b/grails-data-simple/build.gradle index df43a6fef72..d83119f62bd 100644 --- a/grails-data-simple/build.gradle +++ b/grails-data-simple/build.gradle @@ -95,6 +95,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/java-config.gradle') from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-databinding-core/build.gradle b/grails-databinding-core/build.gradle index 28a0551fbb3..6dea9c0bbaf 100644 --- a/grails-databinding-core/build.gradle +++ b/grails-databinding-core/build.gradle @@ -60,5 +60,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-databinding/build.gradle b/grails-databinding/build.gradle index 6261cef74a6..8de6190d762 100644 --- a/grails-databinding/build.gradle +++ b/grails-databinding/build.gradle @@ -73,5 +73,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-datamapping-async/build.gradle b/grails-datamapping-async/build.gradle index 9e707b50bbb..da690bb3aa2 100644 --- a/grails-datamapping-async/build.gradle +++ b/grails-datamapping-async/build.gradle @@ -77,5 +77,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-datamapping-core-test/build.gradle b/grails-datamapping-core-test/build.gradle index e55f775f238..62807a753cd 100644 --- a/grails-datamapping-core-test/build.gradle +++ b/grails-datamapping-core-test/build.gradle @@ -136,5 +136,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/java-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-data-tck-config.gradle') } diff --git a/grails-datamapping-core/build.gradle b/grails-datamapping-core/build.gradle index 8295b2e69e6..f0b29c7a66a 100644 --- a/grails-datamapping-core/build.gradle +++ b/grails-datamapping-core/build.gradle @@ -121,5 +121,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-datamapping-rx/build.gradle b/grails-datamapping-rx/build.gradle index fcaf4b5b6d9..071b73757c2 100644 --- a/grails-datamapping-rx/build.gradle +++ b/grails-datamapping-rx/build.gradle @@ -68,4 +68,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } diff --git a/grails-datamapping-support/build.gradle b/grails-datamapping-support/build.gradle index b4cec37d891..f7104cabf5d 100644 --- a/grails-datamapping-support/build.gradle +++ b/grails-datamapping-support/build.gradle @@ -122,5 +122,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-datamapping-tck/build.gradle b/grails-datamapping-tck/build.gradle index b6ace68d757..efaf3a89606 100644 --- a/grails-datamapping-tck/build.gradle +++ b/grails-datamapping-tck/build.gradle @@ -117,5 +117,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') // do NOT do test configuration here, this is a TCK module } diff --git a/grails-datamapping-validation/build.gradle b/grails-datamapping-validation/build.gradle index cabf5e7304f..41715343dfb 100644 --- a/grails-datamapping-validation/build.gradle +++ b/grails-datamapping-validation/build.gradle @@ -89,6 +89,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-datasource/build.gradle b/grails-datasource/build.gradle index 969a788109d..6fdaed79907 100644 --- a/grails-datasource/build.gradle +++ b/grails-datasource/build.gradle @@ -74,5 +74,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-datastore-async/build.gradle b/grails-datastore-async/build.gradle index 6ad2d35cb47..bebb9e40f39 100644 --- a/grails-datastore-async/build.gradle +++ b/grails-datastore-async/build.gradle @@ -64,5 +64,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-datastore-core/build.gradle b/grails-datastore-core/build.gradle index 87a2d913455..43e34459320 100644 --- a/grails-datastore-core/build.gradle +++ b/grails-datastore-core/build.gradle @@ -101,6 +101,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-datastore-web/build.gradle b/grails-datastore-web/build.gradle index 995de819b8a..1ab8c3d8289 100644 --- a/grails-datastore-web/build.gradle +++ b/grails-datastore-web/build.gradle @@ -91,6 +91,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-dependencies/assets/build.gradle b/grails-dependencies/assets/build.gradle index 3828cba1828..5170e847b79 100644 --- a/grails-dependencies/assets/build.gradle +++ b/grails-dependencies/assets/build.gradle @@ -55,6 +55,7 @@ apply { // java-configuration must be applied first since tasks are now lazy registered from rootProject.layout.projectDirectory.file('gradle/java-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } // these must be after the above applies because they opt out of the defaults created in those files diff --git a/grails-dependencies/starter-web/build.gradle b/grails-dependencies/starter-web/build.gradle index 45cb6206fde..d342b195bbd 100644 --- a/grails-dependencies/starter-web/build.gradle +++ b/grails-dependencies/starter-web/build.gradle @@ -79,6 +79,7 @@ apply { // java-configuration must be applied first since tasks are now lazy registered from rootProject.layout.projectDirectory.file('gradle/java-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } // these must be after the above applies because they opt out of the defaults created in those files diff --git a/grails-dependencies/test/build.gradle b/grails-dependencies/test/build.gradle index c6d539f3c42..2fd2b1b5aea 100644 --- a/grails-dependencies/test/build.gradle +++ b/grails-dependencies/test/build.gradle @@ -57,6 +57,7 @@ apply { // java-configuration must be applied first since tasks are now lazy registered from rootProject.layout.projectDirectory.file('gradle/java-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } // these must be after the above applies because they opt out of the defaults created in those files diff --git a/grails-domain-class/build.gradle b/grails-domain-class/build.gradle index bae1bbd4a53..da3c19dd994 100644 --- a/grails-domain-class/build.gradle +++ b/grails-domain-class/build.gradle @@ -80,5 +80,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-encoder/build.gradle b/grails-encoder/build.gradle index 90ad28fbcc4..7534aa64ac0 100644 --- a/grails-encoder/build.gradle +++ b/grails-encoder/build.gradle @@ -61,5 +61,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-events/compat/build.gradle b/grails-events/compat/build.gradle index d9385c97dcd..05c2bc6266f 100644 --- a/grails-events/compat/build.gradle +++ b/grails-events/compat/build.gradle @@ -41,4 +41,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-events/core/build.gradle b/grails-events/core/build.gradle index 6e72243d77f..1197a281030 100644 --- a/grails-events/core/build.gradle +++ b/grails-events/core/build.gradle @@ -47,5 +47,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-events/gpars/build.gradle b/grails-events/gpars/build.gradle index 6db7a2796be..91fc424c6cf 100644 --- a/grails-events/gpars/build.gradle +++ b/grails-events/gpars/build.gradle @@ -48,5 +48,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-events/plugin/build.gradle b/grails-events/plugin/build.gradle index cdd78d8d50e..a537f25922c 100644 --- a/grails-events/plugin/build.gradle +++ b/grails-events/plugin/build.gradle @@ -54,5 +54,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-events/rxjava/build.gradle b/grails-events/rxjava/build.gradle index f5421639f95..40685b5cbc3 100644 --- a/grails-events/rxjava/build.gradle +++ b/grails-events/rxjava/build.gradle @@ -51,5 +51,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-events/rxjava2/build.gradle b/grails-events/rxjava2/build.gradle index da07f0bad5b..245e965371e 100644 --- a/grails-events/rxjava2/build.gradle +++ b/grails-events/rxjava2/build.gradle @@ -47,5 +47,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-events/rxjava3/build.gradle b/grails-events/rxjava3/build.gradle index 836342bd77f..7c88e271f3d 100644 --- a/grails-events/rxjava3/build.gradle +++ b/grails-events/rxjava3/build.gradle @@ -47,5 +47,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-events/spring/build.gradle b/grails-events/spring/build.gradle index 94bcb756993..6d58e8837c0 100644 --- a/grails-events/spring/build.gradle +++ b/grails-events/spring/build.gradle @@ -47,5 +47,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-events/transforms/build.gradle b/grails-events/transforms/build.gradle index 8312249c118..3b63b115405 100644 --- a/grails-events/transforms/build.gradle +++ b/grails-events/transforms/build.gradle @@ -64,5 +64,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-fields/build.gradle b/grails-fields/build.gradle index 98bd1f6af41..9546dfd1431 100644 --- a/grails-fields/build.gradle +++ b/grails-fields/build.gradle @@ -63,6 +63,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } \ No newline at end of file diff --git a/grails-forge/build.gradle b/grails-forge/build.gradle index 9fc3bfb5f21..571584a9859 100644 --- a/grails-forge/build.gradle +++ b/grails-forge/build.gradle @@ -99,8 +99,6 @@ subprojects { cacheChangingModulesFor(cacheHours, 'hours') } } - - apply from: rootProject.layout.projectDirectory.file('gradle/dependency-licenses.gradle') } apply { diff --git a/grails-forge/buildSrc/build.gradle b/grails-forge/buildSrc/build.gradle index 4684886d05a..7ad7cf0435a 100644 --- a/grails-forge/buildSrc/build.gradle +++ b/grails-forge/buildSrc/build.gradle @@ -77,10 +77,6 @@ configurations.configureEach { dependencies { implementation "org.apache.grails.gradle:grails-publish:$grailsPublishGradleVersion" - implementation "gradle.plugin.com.hierynomus.gradle.plugins:license-gradle-plugin:${rootProperties.gradleLicensePluginVersion}", { - // Due to https://github.com/hierynomus/license-gradle-plugin/issues/161, spring must be excluded - exclude group: 'org.springframework', module: 'spring-core' - } implementation "io.micronaut.build.internal:micronaut-gradle-plugins:$micronautGradlePlugins" implementation "com.fizzed:rocker-compiler:$rockerVersion" implementation "com.fasterxml.jackson.core:jackson-databind:$jacksonDatabindVersion" @@ -99,6 +95,7 @@ dependencies { implementation "org.gradle.crypto.checksum:org.gradle.crypto.checksum.gradle.plugin:$gradleChecksumPluginVersion" implementation "org.apache.ant:ant:$antVersion" implementation "org.apache.grails.gradle:grails-gradle-common:$projectVersion" + implementation "org.cyclonedx.bom:org.cyclonedx.bom.gradle.plugin:${rootProperties.gradleCycloneDxPluginVersion}" } gradlePlugin { diff --git a/grails-forge/gradle/dependency-licenses.gradle b/grails-forge/gradle/dependency-licenses.gradle deleted file mode 100644 index 24c7f836969..00000000000 --- a/grails-forge/gradle/dependency-licenses.gradle +++ /dev/null @@ -1,30 +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 - * - * https://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. - */ - -apply plugin: 'com.github.hierynomus.license-report' - -List licenseExclusions = rootProject.subprojects.collect { - "${it.group}:${it.findProperty('pomArtifactId') ?: it.name}:${rootProject.projectVersion}" as String -} - -downloadLicenses { - includeProjectDependencies = true - dependencyConfiguration = 'runtimeClasspath' - excludeDependencies = licenseExclusions -} \ No newline at end of file diff --git a/grails-forge/gradle/java-config.gradle b/grails-forge/gradle/java-config.gradle index dab7db9cba3..3e43348098c 100644 --- a/grails-forge/gradle/java-config.gradle +++ b/grails-forge/gradle/java-config.gradle @@ -48,6 +48,11 @@ tasks.withType(GroovyCompile).configureEach { // Grails determines the grails version via the META-INF/MANIFEST.MF file // Note: we exclude attributes such as Built-By, Build-Jdk, Created-By to ensure the build is reproducible. tasks.withType(Jar).configureEach { + if (project.findProperty('skipJavaComponent')) { + it.enabled = false + return + } + manifest.attributes( 'Implementation-Title': 'Apache Grails', 'Implementation-Version': projectVersion, diff --git a/grails-forge/gradle/publish-config.gradle b/grails-forge/gradle/publish-config.gradle index df16ad89be4..69b0e349b11 100644 --- a/grails-forge/gradle/publish-config.gradle +++ b/grails-forge/gradle/publish-config.gradle @@ -17,7 +17,6 @@ * under the License. */ - import org.gradle.crypto.checksum.Checksum import org.apache.grails.gradle.publish.GrailsPublishExtension @@ -33,26 +32,28 @@ extensions.configure(GrailsPublishExtension) { it.publishTestSources = findProperty('pomPublishTestSources') ?: false } -tasks.withType(Jar).configureEach { - if(it.archiveClassifier.getOrNull() != 'javadoc') { - from(rootProject.layout.projectDirectory.file('../DISCLAIMER')) { - into('META-INF') - } - - def projectLicense = layout.projectDirectory.file('src/main/resources/META-INF/LICENSE') - if (!projectLicense.asFile.exists()) { - def basicLicense = rootProject.layout.projectDirectory.file('../licenses/LICENSE-Apache-2.0.txt') - from(basicLicense) { +if (!project.findProperty('skipJavaComponent')) { + tasks.withType(Jar).configureEach { + if (it.archiveClassifier.getOrNull() != 'javadoc') { + from(rootProject.layout.projectDirectory.file('../DISCLAIMER')) { into('META-INF') - rename { 'LICENSE' } } - } - def projectNotice = layout.projectDirectory.file('src/main/resources/META-INF/NOTICE') - if (!projectNotice.asFile.exists()) { - def basicNotice = rootProject.layout.projectDirectory.file('../grails-core/src/main/resources/META-INF/NOTICE') - from(basicNotice) { - into('META-INF') + def projectLicense = layout.projectDirectory.file('src/main/resources/META-INF/LICENSE') + if (!projectLicense.asFile.exists()) { + def basicLicense = rootProject.layout.projectDirectory.file('../licenses/LICENSE-Apache-2.0.txt') + from(basicLicense) { + into('META-INF') + rename { 'LICENSE' } + } + } + + def projectNotice = layout.projectDirectory.file('src/main/resources/META-INF/NOTICE') + if (!projectNotice.asFile.exists()) { + def basicNotice = rootProject.layout.projectDirectory.file('../grails-core/src/main/resources/META-INF/NOTICE') + from(basicNotice) { + into('META-INF') + } } } } diff --git a/grails-forge/grails-cli/build.gradle b/grails-forge/grails-cli/build.gradle index 59e79ba704d..21e14b13274 100644 --- a/grails-forge/grails-cli/build.gradle +++ b/grails-forge/grails-cli/build.gradle @@ -34,6 +34,7 @@ ext { ] cliProject = true startMainClass = 'org.apache.grails.cli.DelegatingShellApplication' + sbomProjectType = org.cyclonedx.model.Component.Type.APPLICATION.name() } version = projectVersion @@ -79,6 +80,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/java-config.gradle') from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('../gradle/sbom-config.gradle') } // It's surprisingly hard to generate start scripts and *not* have them nested into a bin / lib directory diff --git a/grails-forge/grails-forge-cli/build.gradle b/grails-forge/grails-forge-cli/build.gradle index 2422caec5a3..3a01d7bcd59 100644 --- a/grails-forge/grails-forge-cli/build.gradle +++ b/grails-forge/grails-forge-cli/build.gradle @@ -60,6 +60,7 @@ configurations { ext { cliProject = true startMainClass = 'org.grails.forge.cli.Application' + sbomProjectType = org.cyclonedx.model.Component.Type.APPLICATION.name() } dependencies { @@ -111,6 +112,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/java-config.gradle') from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('../gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/doc-config.gradle') } diff --git a/grails-forge/grails-forge-core/build.gradle b/grails-forge/grails-forge-core/build.gradle index ef008f864d3..2c68db26b3b 100644 --- a/grails-forge/grails-forge-core/build.gradle +++ b/grails-forge/grails-forge-core/build.gradle @@ -117,6 +117,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/java-config.gradle') from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('../gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/doc-config.gradle') } diff --git a/grails-geb/build.gradle b/grails-geb/build.gradle index 52428c07ddd..857eb49b2c7 100644 --- a/grails-geb/build.gradle +++ b/grails-geb/build.gradle @@ -68,6 +68,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } \ No newline at end of file diff --git a/grails-gradle/bom/build.gradle b/grails-gradle/bom/build.gradle index 6dfe37f740c..244e25420de 100644 --- a/grails-gradle/bom/build.gradle +++ b/grails-gradle/bom/build.gradle @@ -165,4 +165,5 @@ ext { apply { from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('../gradle/sbom-config.gradle') } diff --git a/grails-gradle/buildSrc/build.gradle b/grails-gradle/buildSrc/build.gradle index 6595dd9274f..5aabb668410 100644 --- a/grails-gradle/buildSrc/build.gradle +++ b/grails-gradle/buildSrc/build.gradle @@ -64,4 +64,5 @@ file('../../gradle.properties').withInputStream { dependencies { implementation "${gradleBomDependencies['grails-publish-plugin']}" implementation "org.gradle.crypto.checksum:org.gradle.crypto.checksum.gradle.plugin:${gradleProperties.gradleChecksumPluginVersion}" + implementation "org.cyclonedx.bom:org.cyclonedx.bom.gradle.plugin:${gradleProperties.gradleCycloneDxPluginVersion}" } \ No newline at end of file diff --git a/grails-gradle/common/build.gradle b/grails-gradle/common/build.gradle index b6cb6281e4e..777503c185f 100644 --- a/grails-gradle/common/build.gradle +++ b/grails-gradle/common/build.gradle @@ -54,4 +54,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') + from rootProject.layout.projectDirectory.file('../gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-gradle/docs-core/build.gradle b/grails-gradle/docs-core/build.gradle index 92d81c72abd..b9a1806b9b3 100644 --- a/grails-gradle/docs-core/build.gradle +++ b/grails-gradle/docs-core/build.gradle @@ -33,6 +33,7 @@ configurations { ext { pomDescription = 'Support for Grails documentation generation in Gradle builds.' + sbomProjectType = org.cyclonedx.model.Component.Type.LIBRARY.name() } dependencies { @@ -91,4 +92,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('../gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-gradle/gradle/java-config.gradle b/grails-gradle/gradle/java-config.gradle index c5d538865a9..cab40a97ad1 100644 --- a/grails-gradle/gradle/java-config.gradle +++ b/grails-gradle/gradle/java-config.gradle @@ -58,6 +58,11 @@ tasks.withType(GroovyCompile).configureEach { // Grails determines the grails version via the META-INF/MANIFEST.MF file // Note: we exclude attributes such as Built-By, Build-Jdk, Created-By to ensure the build is reproducible. tasks.withType(Jar).configureEach { + if (project.findProperty('skipJavaComponent')) { + it.enabled = false + return + } + manifest.attributes( 'Implementation-Title': 'Apache Grails', 'Implementation-Version': projectVersion, diff --git a/grails-gradle/gradle/publish-config.gradle b/grails-gradle/gradle/publish-config.gradle index 59ab250b274..5feed2c8958 100644 --- a/grails-gradle/gradle/publish-config.gradle +++ b/grails-gradle/gradle/publish-config.gradle @@ -32,7 +32,7 @@ extensions.configure(GrailsPublishExtension) { it.developers = findProperty('pomDevelopers') as Map ?: [graemerocher: 'Graeme Rocher', jeffscottbrown: 'Jeff Scott Brown', puneetbehl: 'Puneet Behl'] it.pomCustomization = findProperty('pomCustomization') as Closure it.publishTestSources = findProperty('pomPublishTestSources') ?: false - it.testRepositoryPath = rootProject.layout.projectDirectory.dir('../build/local-maven') + it.testRepositoryPath = findProperty('skipJavaComponent') ? null : rootProject.layout.projectDirectory.dir('../build/local-maven') it.publicationName = findProperty('pomMavenPublicationName') ?: 'maven' it.addComponents = project.name != 'grails-gradle-plugins' } diff --git a/grails-gradle/model/build.gradle b/grails-gradle/model/build.gradle index 5ee6d02e96f..cea6b1c22e3 100644 --- a/grails-gradle/model/build.gradle +++ b/grails-gradle/model/build.gradle @@ -31,6 +31,7 @@ ext { pomTitle = 'Grails Gradle Model' pomDescription = 'Classes to support the Grails Gradle Plugins' pomDevelopers = [graemerocher: 'Graeme Rocher'] + sbomProjectType = org.cyclonedx.model.Component.Type.LIBRARY.name() } dependencies { @@ -80,4 +81,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('../gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-gradle/plugins/build.gradle b/grails-gradle/plugins/build.gradle index 01b230951e2..4e092f11f17 100644 --- a/grails-gradle/plugins/build.gradle +++ b/grails-gradle/plugins/build.gradle @@ -124,4 +124,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('../gradle/sbom-config.gradle') } diff --git a/grails-gradle/tasks/build.gradle b/grails-gradle/tasks/build.gradle index 8e20aeb902b..821ce12f4dc 100644 --- a/grails-gradle/tasks/build.gradle +++ b/grails-gradle/tasks/build.gradle @@ -29,6 +29,7 @@ group = 'org.apache.grails' ext { pomTitle = 'Grails Gradle Tasks' pomDescription = 'Various bundled Gradle tasks for Grails projects' + sbomProjectType = org.cyclonedx.model.Component.Type.LIBRARY.name() } dependencies { @@ -52,4 +53,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('../gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-gsp/core/build.gradle b/grails-gsp/core/build.gradle index 07b4d5a5f15..b9acca589b7 100644 --- a/grails-gsp/core/build.gradle +++ b/grails-gsp/core/build.gradle @@ -93,5 +93,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-gsp/grails-layout/build.gradle b/grails-gsp/grails-layout/build.gradle index 7a1403ac627..389897eefb4 100644 --- a/grails-gsp/grails-layout/build.gradle +++ b/grails-gsp/grails-layout/build.gradle @@ -64,6 +64,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } \ No newline at end of file diff --git a/grails-gsp/grails-sitemesh3/build.gradle b/grails-gsp/grails-sitemesh3/build.gradle index 5453a52427f..edbe66e4fb9 100644 --- a/grails-gsp/grails-sitemesh3/build.gradle +++ b/grails-gsp/grails-sitemesh3/build.gradle @@ -85,6 +85,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } \ No newline at end of file diff --git a/grails-gsp/grails-taglib/build.gradle b/grails-gsp/grails-taglib/build.gradle index ca0d47a9aa5..09f4fe203c5 100644 --- a/grails-gsp/grails-taglib/build.gradle +++ b/grails-gsp/grails-taglib/build.gradle @@ -84,5 +84,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } diff --git a/grails-gsp/grails-web-gsp-taglib/build.gradle b/grails-gsp/grails-web-gsp-taglib/build.gradle index a566d7346bf..5e4b6d7ae45 100644 --- a/grails-gsp/grails-web-gsp-taglib/build.gradle +++ b/grails-gsp/grails-web-gsp-taglib/build.gradle @@ -63,5 +63,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } diff --git a/grails-gsp/grails-web-gsp/build.gradle b/grails-gsp/grails-web-gsp/build.gradle index 5fdf1575030..dd1050a901a 100644 --- a/grails-gsp/grails-web-gsp/build.gradle +++ b/grails-gsp/grails-web-gsp/build.gradle @@ -131,5 +131,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } diff --git a/grails-gsp/grails-web-jsp/build.gradle b/grails-gsp/grails-web-jsp/build.gradle index d2ac2fcedfc..c4420a7db09 100644 --- a/grails-gsp/grails-web-jsp/build.gradle +++ b/grails-gsp/grails-web-jsp/build.gradle @@ -112,5 +112,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } diff --git a/grails-gsp/grails-web-taglib/build.gradle b/grails-gsp/grails-web-taglib/build.gradle index 3e646f238ae..ba730c2ac3b 100644 --- a/grails-gsp/grails-web-taglib/build.gradle +++ b/grails-gsp/grails-web-taglib/build.gradle @@ -116,5 +116,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-gsp/plugin/build.gradle b/grails-gsp/plugin/build.gradle index 5b2320d89ed..8903ee9d0a6 100644 --- a/grails-gsp/plugin/build.gradle +++ b/grails-gsp/plugin/build.gradle @@ -184,6 +184,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } diff --git a/grails-i18n/build.gradle b/grails-i18n/build.gradle index 5575f1bcc6e..707abd5fd04 100644 --- a/grails-i18n/build.gradle +++ b/grails-i18n/build.gradle @@ -67,4 +67,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-interceptors/build.gradle b/grails-interceptors/build.gradle index 178cc862cbc..023bf496ff7 100644 --- a/grails-interceptors/build.gradle +++ b/grails-interceptors/build.gradle @@ -66,5 +66,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-logging/build.gradle b/grails-logging/build.gradle index beef4f22685..d0c256a0078 100644 --- a/grails-logging/build.gradle +++ b/grails-logging/build.gradle @@ -57,5 +57,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-micronaut/build.gradle b/grails-micronaut/build.gradle index 8648a527710..21cfa03d6fc 100644 --- a/grails-micronaut/build.gradle +++ b/grails-micronaut/build.gradle @@ -45,4 +45,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/java-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-mimetypes/build.gradle b/grails-mimetypes/build.gradle index 4fb2f63bec4..ddac43902aa 100644 --- a/grails-mimetypes/build.gradle +++ b/grails-mimetypes/build.gradle @@ -65,5 +65,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-profiles/base/build.gradle b/grails-profiles/base/build.gradle index 305150a2bb1..c8139b9999d 100644 --- a/grails-profiles/base/build.gradle +++ b/grails-profiles/base/build.gradle @@ -60,4 +60,5 @@ tasks.named('compileProfile').configure { apply { from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-profiles/plugin/build.gradle b/grails-profiles/plugin/build.gradle index c20f6499d31..a52fd75f3fe 100644 --- a/grails-profiles/plugin/build.gradle +++ b/grails-profiles/plugin/build.gradle @@ -34,4 +34,5 @@ dependencies { apply { from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-profiles/profile/build.gradle b/grails-profiles/profile/build.gradle index 7c62b1c9c46..30d5c394e7a 100644 --- a/grails-profiles/profile/build.gradle +++ b/grails-profiles/profile/build.gradle @@ -54,4 +54,5 @@ tasks.named('compileProfile').configure { apply { from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-profiles/rest-api-plugin/build.gradle b/grails-profiles/rest-api-plugin/build.gradle index 136581327e0..42979ed9fb3 100644 --- a/grails-profiles/rest-api-plugin/build.gradle +++ b/grails-profiles/rest-api-plugin/build.gradle @@ -35,4 +35,5 @@ dependencies { apply { from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-profiles/rest-api/build.gradle b/grails-profiles/rest-api/build.gradle index c257beb5be1..ea994484a81 100644 --- a/grails-profiles/rest-api/build.gradle +++ b/grails-profiles/rest-api/build.gradle @@ -34,4 +34,5 @@ dependencies { apply { from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-profiles/web-plugin/build.gradle b/grails-profiles/web-plugin/build.gradle index ffed8372fe7..614567b345d 100644 --- a/grails-profiles/web-plugin/build.gradle +++ b/grails-profiles/web-plugin/build.gradle @@ -35,4 +35,5 @@ dependencies { apply { from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } diff --git a/grails-profiles/web/build.gradle b/grails-profiles/web/build.gradle index cf2d6c335ea..b73180727e5 100644 --- a/grails-profiles/web/build.gradle +++ b/grails-profiles/web/build.gradle @@ -34,4 +34,5 @@ dependencies { apply { from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } diff --git a/grails-rest-transforms/build.gradle b/grails-rest-transforms/build.gradle index 40e93a75632..be8345be3d8 100644 --- a/grails-rest-transforms/build.gradle +++ b/grails-rest-transforms/build.gradle @@ -77,5 +77,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-scaffolding/build.gradle b/grails-scaffolding/build.gradle index c21a4e5c044..bc0b3f118b8 100644 --- a/grails-scaffolding/build.gradle +++ b/grails-scaffolding/build.gradle @@ -47,6 +47,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } \ No newline at end of file diff --git a/grails-services/build.gradle b/grails-services/build.gradle index b4da45e80d8..dc94db6afd8 100644 --- a/grails-services/build.gradle +++ b/grails-services/build.gradle @@ -68,4 +68,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-shell-cli/build.gradle b/grails-shell-cli/build.gradle index ee789751961..5a5cc0e731f 100644 --- a/grails-shell-cli/build.gradle +++ b/grails-shell-cli/build.gradle @@ -31,6 +31,10 @@ configurations.register('shellCliDependencies').configure { configurations.runtimeClasspath.extendsFrom(it) } +ext { + sbomProjectType = org.cyclonedx.model.Component.Type.APPLICATION.name() +} + dependencies { implementation platform(project(':grails-bom')) @@ -127,6 +131,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } diff --git a/grails-spring/build.gradle b/grails-spring/build.gradle index ef54cccd23e..9395164cb6d 100644 --- a/grails-spring/build.gradle +++ b/grails-spring/build.gradle @@ -61,4 +61,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-test-core/build.gradle b/grails-test-core/build.gradle index d6985226174..b619710528a 100644 --- a/grails-test-core/build.gradle +++ b/grails-test-core/build.gradle @@ -88,4 +88,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-testing-support-core/build.gradle b/grails-testing-support-core/build.gradle index 4a816f0f60e..e509bb27388 100644 --- a/grails-testing-support-core/build.gradle +++ b/grails-testing-support-core/build.gradle @@ -78,5 +78,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-testing-support-datamapping/build.gradle b/grails-testing-support-datamapping/build.gradle index eed573a2866..9ab8606bc9f 100755 --- a/grails-testing-support-datamapping/build.gradle +++ b/grails-testing-support-datamapping/build.gradle @@ -139,5 +139,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-testing-support-mongodb/build.gradle b/grails-testing-support-mongodb/build.gradle index 7f480cebb22..938c1867f1b 100644 --- a/grails-testing-support-mongodb/build.gradle +++ b/grails-testing-support-mongodb/build.gradle @@ -47,5 +47,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } \ No newline at end of file diff --git a/grails-testing-support-views-gson/build.gradle b/grails-testing-support-views-gson/build.gradle index b8f42edf2e0..3de827ad7f0 100644 --- a/grails-testing-support-views-gson/build.gradle +++ b/grails-testing-support-views-gson/build.gradle @@ -53,5 +53,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') } diff --git a/grails-testing-support-web/build.gradle b/grails-testing-support-web/build.gradle index e5f8bc99381..299bee05cd6 100755 --- a/grails-testing-support-web/build.gradle +++ b/grails-testing-support-web/build.gradle @@ -53,5 +53,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-url-mappings/build.gradle b/grails-url-mappings/build.gradle index 2d917cee1f8..ef6482702e3 100644 --- a/grails-url-mappings/build.gradle +++ b/grails-url-mappings/build.gradle @@ -68,4 +68,5 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } \ No newline at end of file diff --git a/grails-validation/build.gradle b/grails-validation/build.gradle index 26e5bb34347..74d9d7f4a40 100644 --- a/grails-validation/build.gradle +++ b/grails-validation/build.gradle @@ -66,5 +66,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-views-core/build.gradle b/grails-views-core/build.gradle index a54475a5f9b..d9a310b17af 100644 --- a/grails-views-core/build.gradle +++ b/grails-views-core/build.gradle @@ -56,5 +56,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-views-gson/build.gradle b/grails-views-gson/build.gradle index c7fbbdcbe0c..6b271697b46 100644 --- a/grails-views-gson/build.gradle +++ b/grails-views-gson/build.gradle @@ -68,6 +68,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } \ No newline at end of file diff --git a/grails-views-markup/build.gradle b/grails-views-markup/build.gradle index 4530280e2e6..910af14a1f4 100644 --- a/grails-views-markup/build.gradle +++ b/grails-views-markup/build.gradle @@ -57,6 +57,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle') } \ No newline at end of file diff --git a/grails-web-boot/build.gradle b/grails-web-boot/build.gradle index f1e2455cd56..5d387223f88 100644 --- a/grails-web-boot/build.gradle +++ b/grails-web-boot/build.gradle @@ -70,5 +70,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-web-common/build.gradle b/grails-web-common/build.gradle index 189b9677a6a..7eb8bce67d6 100644 --- a/grails-web-common/build.gradle +++ b/grails-web-common/build.gradle @@ -81,5 +81,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-web-core/build.gradle b/grails-web-core/build.gradle index a434004036d..867bc32f79d 100644 --- a/grails-web-core/build.gradle +++ b/grails-web-core/build.gradle @@ -75,5 +75,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-web-databinding/build.gradle b/grails-web-databinding/build.gradle index 73f47df1395..8fda4ed286b 100644 --- a/grails-web-databinding/build.gradle +++ b/grails-web-databinding/build.gradle @@ -74,5 +74,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-web-mvc/build.gradle b/grails-web-mvc/build.gradle index 0f4923c7649..e4b08ea68b7 100644 --- a/grails-web-mvc/build.gradle +++ b/grails-web-mvc/build.gradle @@ -66,5 +66,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-web-url-mappings/build.gradle b/grails-web-url-mappings/build.gradle index 7e67bdb7489..b97d7a0c0ee 100644 --- a/grails-web-url-mappings/build.gradle +++ b/grails-web-url-mappings/build.gradle @@ -79,5 +79,6 @@ apply { from rootProject.layout.projectDirectory.file('gradle/code-style-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') } \ No newline at end of file diff --git a/grails-wrapper/build.gradle b/grails-wrapper/build.gradle index 82e67d17271..48407350d70 100644 --- a/grails-wrapper/build.gradle +++ b/grails-wrapper/build.gradle @@ -35,6 +35,7 @@ ext { ] cliProject = true startMainClass = 'grails.init.Start' + sbomProjectType = org.cyclonedx.model.Component.Type.APPLICATION.name() } dependencies { @@ -56,6 +57,7 @@ apply { from rootProject.layout.projectDirectory.file('gradle/test-config.gradle') from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle') from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle') + from rootProject.layout.projectDirectory.file('gradle/sbom-config.gradle') } // It's surprisingly hard to generate start scripts and *not* have them nested into a bin / lib directory