diff --git a/.github/workflows/add-index-exclusion.yml b/.github/workflows/add-index-exclusion.yml index 5704303..ecf2d94 100644 --- a/.github/workflows/add-index-exclusion.yml +++ b/.github/workflows/add-index-exclusion.yml @@ -14,14 +14,15 @@ jobs: name: Add OSS Index Exclusion action runs-on: ubuntu-latest steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - name: Checkout + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 with: fetch-depth: 0 token: ${{ secrets.PUBLISH_KEY }} - - name: "Add exclusion" + - name: Add exclusion run: | echo "${{ github.event.inputs.exclusion }}" >> config/ossindex/exclusions.txt - - name: "git branch" + - name: Create git branch run: | git config --global user.name 'Esta Nagy' git config --global user.email 'nagyesta@gmail.com' @@ -29,7 +30,8 @@ jobs: git add config/ossindex/exclusions.txt git commit -asm "Excluding vulnerability ${{ github.event.inputs.exclusion }} {patch}" git push -f --set-upstream origin feature/exclude-vulnerability-run-${{ github.run_number }} - - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + - name: Create Pull Request + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: github-token: ${{ secrets.PUBLISH_KEY }} script: | diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0b6b27b..67e3d39 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -77,14 +77,13 @@ jobs: uses: github/codeql-action/init@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 with: languages: 'java' - - name: Build with Gradle - uses: gradle/gradle-build-action@4c39dd82cd5e1ec7c6fa0173bb41b4b6bb3b86ff # v3.3.2 + - name: Set up Gradle + uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2 with: cache-disabled: true - arguments: build -x test + - name: Build with Gradle + run: ./gradlew build -x test - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 - name: Check dependencies with Gradle - uses: gradle/gradle-build-action@4c39dd82cd5e1ec7c6fa0173bb41b4b6bb3b86ff # v3.3.2 - with: - arguments: ossIndexAudit -PossIndexUsername=${{ secrets.OSS_INDEX_USER }} -PossIndexPassword=${{ secrets.OSS_INDEX_PASSWORD }} + run: ./gradlew ossIndexAudit -PossIndexUsername=${{ secrets.OSS_INDEX_USER }} -PossIndexPassword=${{ secrets.OSS_INDEX_PASSWORD }} diff --git a/.github/workflows/gradle-ci.yml b/.github/workflows/gradle-ci.yml index f982ce2..6e34b5f 100644 --- a/.github/workflows/gradle-ci.yml +++ b/.github/workflows/gradle-ci.yml @@ -31,7 +31,6 @@ on: - '.github/pr-labeler.yml' - 'renovate.json' - '.whitesource' - - 'gradle/libs.versions.toml' - 'config/ossindex/exclusions.txt' permissions: read-all @@ -45,7 +44,8 @@ jobs: steps: # Set up build environment - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - name: Checkout + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 with: fetch-depth: 0 - name: Set up JDK 17 @@ -53,21 +53,17 @@ jobs: with: distribution: temurin java-version: 17 + - name: Set up Gradle + uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2 + with: + cache-disabled: true - name: Build with Gradle (if Ubuntu) - uses: gradle/gradle-build-action@4c39dd82cd5e1ec7c6fa0173bb41b4b6bb3b86ff # v3.3.2 if: ${{ matrix.os == 'ubuntu-latest' }} - with: - arguments: | - printVersion build - -Pci + run: ./gradlew printVersion build -Pci - name: Build with Gradle (if Windows) - uses: gradle/gradle-build-action@4c39dd82cd5e1ec7c6fa0173bb41b4b6bb3b86ff # v3.3.2 if: ${{ matrix.os != 'ubuntu-latest' }} - with: - arguments: | - printVersion build -x :file-barj-core:jacocoTestCoverageVerification - -Pci - - name: 'Upload Test reports - Core' + run: ./gradlew printVersion build -x :file-barj-core:jacocoTestCoverageVerification -Pci + - name: Upload Test reports - Core if: always() uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: @@ -76,7 +72,7 @@ jobs: file-barj-core/build/reports/tests/test file-barj-core/build/reports/abort-mission/abort-mission-report.html retention-days: 5 - - name: 'Upload Test reports - Job' + - name: Upload Test reports - Job if: always() uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: @@ -85,7 +81,7 @@ jobs: file-barj-job/build/reports/tests/test file-barj-job/build/reports/abort-mission/abort-mission-report.html retention-days: 5 - - name: 'Upload Test reports - Stream IO' + - name: Upload Test reports - Stream IO if: always() uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: diff --git a/.github/workflows/gradle-oss-index-scan.yml b/.github/workflows/gradle-oss-index-scan.yml index 3945019..216a497 100644 --- a/.github/workflows/gradle-oss-index-scan.yml +++ b/.github/workflows/gradle-oss-index-scan.yml @@ -23,7 +23,9 @@ jobs: with: distribution: temurin java-version: 17 - - name: Check dependencies with Gradle - uses: gradle/gradle-build-action@4c39dd82cd5e1ec7c6fa0173bb41b4b6bb3b86ff # v3.3.2 + - name: Set up Gradle + uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2 with: - arguments: ossIndexAudit -PossIndexUsername=${{ secrets.OSS_INDEX_USER }} -PossIndexPassword=${{ secrets.OSS_INDEX_PASSWORD }} + cache-disabled: true + - name: Check dependencies with Gradle + run: ./gradlew ossIndexAudit -PossIndexUsername=${{ secrets.OSS_INDEX_USER }} -PossIndexPassword=${{ secrets.OSS_INDEX_PASSWORD }} diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 1032ee6..594a7e0 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -39,39 +39,42 @@ jobs: steps: # Set up build environment - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - name: Checkout + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 with: fetch-depth: 0 + token: ${{ secrets.PUBLISH_KEY }} - name: Set up JDK 17 uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1 with: distribution: temurin java-version: 17 - - uses: gradle/gradle-build-action@4c39dd82cd5e1ec7c6fa0173bb41b4b6bb3b86ff # v3.3.2 + - name: Set up Gradle + uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2 with: - gradle-home-cache-cleanup: true - arguments: | - tagVersion build - -Pci - -PgithubUser=${{ secrets.PUBLISH_USER_NAME }} - -PgithubToken=${{ secrets.PUBLISH_KEY }} + cache-disabled: true + - name: Build with Gradle + run: > + ./gradlew tagVersion build + -Pci + -PgithubUser=${{ secrets.PUBLISH_USER_NAME }} + -PgithubToken=${{ secrets.PUBLISH_KEY }} - name: Decode key run: | mkdir -p ${{ runner.temp }}/.gnupg/ echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}" | base64 --decode > ${{ runner.temp }}/.gnupg/secring.gpg - - uses: gradle/gradle-build-action@4c39dd82cd5e1ec7c6fa0173bb41b4b6bb3b86ff # v3.3.2 - with: - arguments: | - publish -x test - -Pci - -PgithubUser=${{ secrets.PUBLISH_USER_NAME }} - -PgithubToken=${{ secrets.PUBLISH_KEY }} - -PossrhUsername=${{ secrets.OSSRH_USER }} - -PossrhPassword=${{ secrets.OSSRH_PASS }} - -Psigning.keyId=${{ secrets.SIGNING_KEY_ID }} - -Psigning.password=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} - -Psigning.secretKeyRingFile=${{ runner.temp }}/.gnupg/secring.gpg - - name: 'Clean-up GPG key' + - name: Publish with Gradle + run: > + ./gradlew publish -x test publishToSonatype closeAndReleaseSonatypeStagingRepository + -Pci + -PgithubUser=${{ secrets.PUBLISH_USER_NAME }} + -PgithubToken=${{ secrets.PUBLISH_KEY }} + -PossrhUsername=${{ secrets.OSSRH_USER }} + -PossrhPassword=${{ secrets.OSSRH_PASS }} + -Psigning.keyId=${{ secrets.SIGNING_KEY_ID }} + -Psigning.password=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} + -Psigning.secretKeyRingFile=${{ runner.temp }}/.gnupg/secring.gpg + - name: Clean-up GPG key if: always() run: | rm -rf ${{ runner.temp }}/.gnupg/ diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml index 1def410..78c5ce0 100644 --- a/.github/workflows/pr-labeler.yml +++ b/.github/workflows/pr-labeler.yml @@ -9,7 +9,8 @@ jobs: pr-labeler: runs-on: ubuntu-latest steps: - - uses: TimonVS/pr-labeler-action@f9c084306ce8b3f488a8f3ee1ccedc6da131d1af # v5.0.0 + - name: Label PR + uses: TimonVS/pr-labeler-action@f9c084306ce8b3f488a8f3ee1ccedc6da131d1af # v5.0.0 with: configuration-path: .github/pr-labeler.yml # optional, .github/pr-labeler.yml is the default value env: diff --git a/.github/workflows/release-draft.yml b/.github/workflows/release-draft.yml index 6234cc8..e00ac20 100644 --- a/.github/workflows/release-draft.yml +++ b/.github/workflows/release-draft.yml @@ -9,7 +9,8 @@ jobs: name: Draft release action runs-on: ubuntu-latest steps: - - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + - name: Create release + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | github.rest.repos.createRelease({ diff --git a/.github/workflows/release-trigger.yml b/.github/workflows/release-trigger.yml index 11d5756..6ed0806 100644 --- a/.github/workflows/release-trigger.yml +++ b/.github/workflows/release-trigger.yml @@ -18,11 +18,12 @@ jobs: name: Release trigger action runs-on: ubuntu-latest steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - name: Checkout + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 with: fetch-depth: 0 token: ${{ secrets.PUBLISH_KEY }} - - name: "Check existing tag" + - name: Check existing tag id: check run: | echo "::set-output name=has_tag::$(git log --format='format:%d' --decorate-refs="refs/tags/v*" -n 1 | grep tag | wc -l)" @@ -33,11 +34,11 @@ jobs: echo "Execution: ${{ github.event.inputs.execution }}" echo "---" echo "Should run: ${{ steps.check.outputs.has_tag == 0 || github.event.inputs.execution == 'Manual' }}" - - name: "Update trigger" + - name: Update trigger if: ${{ steps.check.outputs.has_tag == 0 || github.event.inputs.execution == 'Manual' }} run: | date +%s > .release-trigger - - name: "git branch" + - name: Creat git branch if: ${{ steps.check.outputs.has_tag == 0 || github.event.inputs.execution == 'Manual' }} run: | git config --global user.name 'Esta Nagy' @@ -46,7 +47,8 @@ jobs: git add .release-trigger git commit -asm "Triggering a release {patch}" git push -f --set-upstream origin release/run-${{ github.run_number }} - - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + - name: Create Pull Request + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 if: ${{ steps.check.outputs.has_tag == 0 || github.event.inputs.execution == 'Manual' }} with: github-token: ${{ secrets.PUBLISH_KEY }} diff --git a/.github/workflows/update-dependency-checksums.yml b/.github/workflows/update-dependency-checksums.yml index 8b22abc..f69c789 100644 --- a/.github/workflows/update-dependency-checksums.yml +++ b/.github/workflows/update-dependency-checksums.yml @@ -9,7 +9,8 @@ jobs: name: Dependency checksum compaction action runs-on: ubuntu-latest steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - name: Checkout + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 with: fetch-depth: 0 token: ${{ secrets.PUBLISH_KEY }} @@ -18,14 +19,15 @@ jobs: with: distribution: temurin java-version: 17 - - name: "Remove previous version" + - name: Remove previous version run: cp gradle/verification-metadata-clean.xml gradle/verification-metadata.xml - - name: "Update checksums" - uses: gradle/gradle-build-action@4c39dd82cd5e1ec7c6fa0173bb41b4b6bb3b86ff # v3.3.2 + - name: Set up Gradle + uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2 with: cache-disabled: true - arguments: clean file-barj-job:checkstyleMain --write-verification-metadata sha256 - - name: "Git commit" + - name: Update checksums + run: ./gradlew clean file-barj-job:checkstyleMain licensee --write-verification-metadata sha256 + - name: Git commit run: | git config --global user.name 'Esta Nagy' git config --global user.email 'nagyesta@gmail.com' diff --git a/build.gradle.kts b/build.gradle.kts index 0b3519e..2c05083 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,5 @@ import org.sonatype.gradle.plugins.scan.ossindex.OutputFormat +import java.util.* plugins { id("java") @@ -8,6 +9,8 @@ plugins { alias(libs.plugins.lombok) apply false alias(libs.plugins.index.scan) alias(libs.plugins.owasp.dependencycheck) + alias(libs.plugins.nexus.publish.plugin) + alias(libs.plugins.cyclonedx.bom) } group = "com.github.nagyesta.file-barj" @@ -81,6 +84,7 @@ subprojects { apply(plugin = "io.freefair.lombok") apply(plugin = "org.sonatype.gradle.plugins.scan") apply(plugin = "org.owasp.dependencycheck") + apply(plugin = "org.cyclonedx.bom") group = rootProject.group version = rootProject.version @@ -200,6 +204,38 @@ subprojects { @Suppress("UNCHECKED_CAST") excludeVulnerabilityIds = rootProject.extra.get("ossIndexExclusions") as MutableSet } + + tasks.cyclonedxBom { + if (project.name.endsWith("job")) { + setProjectType("application") + } else { + setProjectType("library") + } + setIncludeConfigs(listOf("runtimeClasspath")) + setSkipConfigs(listOf("compileClasspath", "testCompileClasspath")) + setSkipProjects(listOf()) + setSchemaVersion("1.5") + setDestination(file("build/reports")) + setOutputName("bom") + setOutputFormat("json") + //noinspection UnnecessaryQualifiedReference + val attachmentText = org.cyclonedx.model.AttachmentText() + attachmentText.setText( + Base64.getEncoder().encodeToString( + file("${project.rootProject.projectDir}/LICENSE").readBytes() + ) + ) + attachmentText.encoding = "base64" + attachmentText.contentType = "text/plain" + //noinspection UnnecessaryQualifiedReference + val license = org.cyclonedx.model.License() + license.name = "MIT License" + license.setLicenseText(attachmentText) + license.url = "https://raw.githubusercontent.com/nagyesta/file-barj/main/LICENSE" + setLicenseChoice { + it.addLicense(license) + } + } } ossIndexAudit { @@ -228,3 +264,12 @@ tasks.jacocoTestReport { csv.required.set(false) } } + +nexusPublishing { + repositories { + sonatype { + username = rootProject.extra.get("ossrhUser").toString() + password = rootProject.extra.get("ossrhPass").toString() + } + } +} diff --git a/file-barj-core/build.gradle.kts b/file-barj-core/build.gradle.kts index 5a19819..760c03d 100644 --- a/file-barj-core/build.gradle.kts +++ b/file-barj-core/build.gradle.kts @@ -5,12 +5,13 @@ plugins { signing `maven-publish` alias(libs.plugins.abort.mission) + alias(libs.plugins.licensee.plugin) } extra.apply { set("artifactDisplayName", "File BaRJ - Core") set("artifactDescription", "Defines the inner working mechanism of backup and restore tasks.") - } +} dependencies { compileOnly(libs.jetbrains.annotations) @@ -38,6 +39,27 @@ abortMission { toolVersion = libs.versions.abortMission.get() } +licensee { + allow("MIT") + allow("Apache-2.0") + allow("BSD-2-Clause") + allowUrl("https://www.bouncycastle.org/licence.html") +} + +val copyLegalDocs = tasks.register("copyLegalDocs") { + from(file("${project.rootProject.projectDir}/LICENSE")) + from(layout.buildDirectory.file("reports/licensee/artifacts.json").get().asFile) + from(layout.buildDirectory.file("reports/bom.json").get().asFile) + into(layout.buildDirectory.dir("resources/main/META-INF").get().asFile) + rename("artifacts.json", "dependency-licenses.json") + rename("bom.json", "SBOM.json") +}.get() +copyLegalDocs.dependsOn(tasks.licensee) +copyLegalDocs.dependsOn(tasks.cyclonedxBom) +tasks.javadoc.get().dependsOn(copyLegalDocs) +tasks.compileJava.get().dependsOn(copyLegalDocs) +tasks.processResources.get().finalizedBy(copyLegalDocs) + publishing { repositories { maven { @@ -48,14 +70,6 @@ publishing { password = rootProject.extra.get("gitToken").toString() } } - maven { - name = "ossrh" - url = uri(rootProject.extra.get("ossrhMavenRepoUrl").toString()) - credentials { - username = rootProject.extra.get("ossrhUser").toString() - password = rootProject.extra.get("ossrhPass").toString() - } - } } publications { create("mavenJava") { diff --git a/file-barj-job/build.gradle.kts b/file-barj-job/build.gradle.kts index 657ae17..842c4ab 100644 --- a/file-barj-job/build.gradle.kts +++ b/file-barj-job/build.gradle.kts @@ -3,6 +3,8 @@ plugins { signing `maven-publish` alias(libs.plugins.abort.mission) + alias(libs.plugins.shadow) + alias(libs.plugins.licensee.plugin) } extra.apply { @@ -30,15 +32,37 @@ abortMission { toolVersion = libs.versions.abortMission.get() } -tasks.jar { +tasks.shadowJar { manifest.attributes["Main-Class"] = "com.github.nagyesta.filebarj.job.Main" - val dependencies = configurations - .runtimeClasspath - .get() - .map(::zipTree) - from(dependencies) - duplicatesStrategy = DuplicatesStrategy.EXCLUDE + append("META-INF/LICENSE") + append("META-INF/LICENSE.txt") + append("META-INF/NOTICE") + append("META-INF/NOTICE.txt") exclude("META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA") + archiveClassifier.set("") +} +tasks.build.get().finalizedBy(tasks.shadowJar) + +val copyLegalDocs = tasks.register("copyLegalDocs") { + from(file("${project.rootProject.projectDir}/LICENSE")) + from(layout.buildDirectory.file("reports/licensee/artifacts.json").get().asFile) + from(layout.buildDirectory.file("reports/bom.json").get().asFile) + into(layout.buildDirectory.dir("resources/main/META-INF").get().asFile) + rename("artifacts.json", "dependency-licenses.json") + rename("bom.json", "SBOM.json") +}.get() +copyLegalDocs.dependsOn(tasks.licensee) +copyLegalDocs.dependsOn(tasks.cyclonedxBom) +tasks.javadoc.get().dependsOn(copyLegalDocs) +tasks.compileJava.get().dependsOn(copyLegalDocs) +tasks.processResources.get().finalizedBy(copyLegalDocs) + +licensee { + allow("MIT") + allow("Apache-2.0") + allow("LGPL-2.1-only") + allow("BSD-2-Clause") + allowUrl("https://www.bouncycastle.org/licence.html") } publishing { @@ -51,18 +75,12 @@ publishing { password = rootProject.extra.get("gitToken").toString() } } - maven { - name = "ossrh" - url = uri(rootProject.extra.get("ossrhMavenRepoUrl").toString()) - credentials { - username = rootProject.extra.get("ossrhUser").toString() - password = rootProject.extra.get("ossrhPass").toString() - } - } } publications { create("mavenJava") { - from(components["java"]) + artifact(tasks["sourcesJar"]) + artifact(tasks["javadocJar"]) + artifact(tasks["shadowJar"]) artifactId = project.name pom { name.set(project.extra.get("artifactDisplayName").toString()) @@ -87,12 +105,6 @@ publishing { developerConnection.set(rootProject.extra.get("scmConnection").toString()) url.set(rootProject.extra.get("scmProjectUrl").toString()) } - withXml { - asElement().apply { - val deps = this.getElementsByTagName("dependencies").item(0) - this.removeChild(deps) - } - } } } } diff --git a/file-barj-stream-io/build.gradle.kts b/file-barj-stream-io/build.gradle.kts index bbc301a..442372a 100644 --- a/file-barj-stream-io/build.gradle.kts +++ b/file-barj-stream-io/build.gradle.kts @@ -3,6 +3,7 @@ plugins { signing `maven-publish` alias(libs.plugins.abort.mission) + alias(libs.plugins.licensee.plugin) } extra.apply { @@ -28,6 +29,26 @@ abortMission { toolVersion = libs.versions.abortMission.get() } +licensee { + allow("MIT") + allow("Apache-2.0") + allowUrl("https://www.bouncycastle.org/licence.html") +} + +val copyLegalDocs = tasks.register("copyLegalDocs") { + from(file("${project.rootProject.projectDir}/LICENSE")) + from(layout.buildDirectory.file("reports/licensee/artifacts.json").get().asFile) + from(layout.buildDirectory.file("reports/bom.json").get().asFile) + into(layout.buildDirectory.dir("resources/main/META-INF").get().asFile) + rename("artifacts.json", "dependency-licenses.json") + rename("bom.json", "SBOM.json") +}.get() +copyLegalDocs.dependsOn(tasks.licensee) +copyLegalDocs.dependsOn(tasks.cyclonedxBom) +tasks.javadoc.get().dependsOn(copyLegalDocs) +tasks.compileJava.get().dependsOn(copyLegalDocs) +tasks.processResources.get().finalizedBy(copyLegalDocs) + publishing { repositories { maven { @@ -38,14 +59,6 @@ publishing { password = rootProject.extra.get("gitToken").toString() } } - maven { - name = "ossrh" - url = uri(rootProject.extra.get("ossrhMavenRepoUrl").toString()) - credentials { - username = rootProject.extra.get("ossrhUser").toString() - password = rootProject.extra.get("ossrhPass").toString() - } - } } publications { create("mavenJava") { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1f46ec0..53ba1e0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,6 +23,9 @@ lombokPlugin = "8.6" shadowPlugin = "8.1.1" gitVersionerPlugin = "1.6.7" owaspPlugin = "9.1.0" +cycloneDxBomPlugin = "1.8.2" +licenseePlugin = "1.11.0" +nexusPublishPlugin = "2.0.0" [libraries] logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } @@ -65,3 +68,6 @@ abort-mission = { id = "com.github.nagyesta.abort-mission-gradle-plugin", versio versioner = { id = "io.toolebox.git-versioner", version.ref = "gitVersionerPlugin" } index-scan = { id = "org.sonatype.gradle.plugins.scan", version.ref = "indexScanPlugin" } owasp-dependencycheck = { id = "org.owasp.dependencycheck", version.ref = "owaspPlugin" } +cyclonedx-bom = { id = "org.cyclonedx.bom", version.ref = "cycloneDxBomPlugin" } +licensee-plugin = { id = "app.cash.licensee", version.ref = "licenseePlugin" } +nexus-publish-plugin = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexusPublishPlugin" } diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index c42538e..ee73228 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -10,68 +10,30 @@ - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + @@ -90,62 +52,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -159,41 +65,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -265,9 +136,9 @@ - - - + + + @@ -275,16 +146,6 @@ - - - - - - - - - - @@ -305,9 +166,14 @@ - - - + + + + + + + + @@ -315,16 +181,6 @@ - - - - - - - - - - @@ -340,6 +196,11 @@ + + + + + @@ -350,34 +211,17 @@ - - - - - - - - - - - - - - - - - - - + + @@ -385,24 +229,12 @@ - - - - - - - - - - - - - - + + @@ -410,24 +242,12 @@ - - - - - - - - - - - - - - + + @@ -435,24 +255,12 @@ - - - - - - - - - - - - - - + + @@ -465,61 +273,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -538,14 +316,6 @@ - - - - - - - - @@ -562,28 +332,14 @@ - - - - - - + + + - - - - - - - - - - - - - - + + + @@ -602,45 +358,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -654,30 +371,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -686,30 +379,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -736,6 +405,11 @@ + + + + + @@ -812,14 +486,6 @@ - - - - - - - - @@ -830,11 +496,6 @@ - - - - - @@ -848,14 +509,6 @@ - - - - - - - - @@ -879,11 +532,6 @@ - - - - - @@ -902,12 +550,17 @@ - - - + + + - - + + + + + + + @@ -926,14 +579,6 @@ - - - - - - - - @@ -980,13 +625,18 @@ - - - + + + + + + + + @@ -1003,14 +653,6 @@ - - - - - - - - @@ -1061,14 +703,6 @@ - - - - - - - - @@ -1077,11 +711,6 @@ - - - - - @@ -1090,12 +719,12 @@ - - - + + + - - + + @@ -1122,6 +751,14 @@ + + + + + + + + @@ -1130,14 +767,6 @@ - - - - - - - - @@ -1220,14 +849,6 @@ - - - - - - - - @@ -1236,9 +857,9 @@ - - - + + + @@ -1246,36 +867,51 @@ - - - - - + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + @@ -1292,6 +928,14 @@ + + + + + + + + @@ -1329,14 +973,6 @@ - - - - - - - - @@ -1345,22 +981,6 @@ - - - - - - - - - - - - - - - - @@ -1369,21 +989,11 @@ - - - - - - - - - - @@ -1397,6 +1007,11 @@ + + + + + @@ -1407,14 +1022,6 @@ - - - - - - - - @@ -1441,11 +1048,6 @@ - - - - - @@ -1462,14 +1064,6 @@ - - - - - - - - @@ -1480,11 +1074,6 @@ - - - - - @@ -1530,6 +1119,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -1543,14 +1153,6 @@ - - - - - - - - @@ -1588,6 +1190,14 @@ + + + + + + + + @@ -1624,11 +1234,6 @@ - - - - - @@ -1679,11 +1284,6 @@ - - - - - @@ -1868,6 +1468,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1923,22 +1554,61 @@ - - - + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1949,6 +1619,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1991,6 +1706,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2035,22 +1808,6 @@ - - - - - - - - - - - - - - - - @@ -2067,22 +1824,6 @@ - - - - - - - - - - - - - - - - @@ -2091,22 +1832,6 @@ - - - - - - - - - - - - - - - - @@ -2115,11 +1840,6 @@ - - - - - @@ -2138,11 +1858,34 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -2151,6 +1894,14 @@ + + + + + + + + @@ -2172,10 +1923,23 @@ - - - + + + + + + + + + + + + + + + + @@ -2188,6 +1952,14 @@ + + + + + + + + @@ -2204,12 +1976,22 @@ - - - + + + + + + - - + + + + + + + + + @@ -2217,6 +1999,16 @@ + + + + + + + + + + @@ -2226,9 +2018,6 @@ - - - @@ -2264,6 +2053,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2359,6 +2174,14 @@ + + + + + + + + @@ -2375,22 +2198,24 @@ - - - - - - - - + + + + + + + + - - + + + + @@ -2416,6 +2241,16 @@ + + + + + + + + + + @@ -2476,14 +2311,6 @@ - - - - - - - - @@ -2528,6 +2355,14 @@ + + + + + + + + @@ -2554,6 +2389,14 @@ + + + + + + + + @@ -2578,6 +2421,14 @@ + + + + + + + + @@ -2594,22 +2445,6 @@ - - - - - - - - - - - - - - - - @@ -2618,22 +2453,6 @@ - - - - - - - - - - - - - - - - @@ -2642,37 +2461,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2681,16 +2474,6 @@ - - - - - - - - - - @@ -2728,11 +2511,6 @@ - - - - - @@ -2749,21 +2527,10 @@ - - - - - - - - - - - @@ -2772,9 +2539,12 @@ - - - + + + + + + @@ -2782,11 +2552,6 @@ - - - - - @@ -2807,16 +2572,16 @@ - - - - - + + + + + @@ -2881,31 +2646,11 @@ - - - - - - - - - - - - - - - - - - - - @@ -2977,6 +2722,11 @@ + + + + + @@ -2998,6 +2748,14 @@ + + + + + + + +