diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..e2a5d56 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,8 @@ +version: 2 + +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9af6b78..b658109 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,11 @@ name: build -on: [push, pull_request] +on: + push: + branches: + - master + pull_request: + types: [ opened, labeled, unlabeled, synchronize ] env: GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dkotlin.incremental=false" @@ -13,38 +18,39 @@ jobs: fail-fast: false matrix: java-version: - - 1.8 + - 8 steps: + - name: Checkout Project + uses: actions/checkout@v3 + + - name: Validate Gradle Wrapper + uses: gradle/wrapper-validation-action@v1.0.4 + - name: Cache Gradle dependencies - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | ~/.gradle/caches ~/.gradle/wrapper/ ~/.android/build-cache - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} - restore-keys: ${{ runner.os }}-gradle - - - name: Checkout Project - uses: actions/checkout@v2 - - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v1 + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: ${{ runner.os }}-gradle- - name: Configure JDK - uses: actions/setup-java@v1 + uses: actions/setup-java@v3.1.0 with: + distribution: temurin java-version: ${{ matrix.java-version }} - name: Run Build - run: ./gradlew clean build jar docsJar sourcesJar testsJar reportsZip generatePomFileForMavenPublication -s --scan + run: ./gradlew clean build -s - name: Upload Artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3.0.0 if: always() with: - name: gradle-checker-framework-plugin-${{ github.workflow }}-${{ github.run_id }} + name: gradle-license-plugin-${{ github.workflow }}-${{ github.run_id }} path: | build/libs build/outputs @@ -62,20 +68,19 @@ jobs: steps: - name: Checkout Project - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v1 + uses: gradle/wrapper-validation-action@v1.0.4 - name: Configure JDK - uses: actions/setup-java@v1 + uses: actions/setup-java@v3.1.0 with: - java-version: 1.8 + distribution: temurin + java-version: 8 - name: Publish - run: ./gradlew clean artifactoryPublish -s --scan + run: ./gradlew clean publish -s env: - BINTRAY_API_KEY: ${{ secrets.BINTRAY_API_KEY }} - BINTRAY_USERNAME: ${{ secrets.BINTRAY_USERNAME }} - GRADLE_KEY: ${{ secrets.GRADLE_KEY }} - GRADLE_SECRET: ${{ secrets.GRADLE_SECRET }} + ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_USERNAME }} + ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_PASSWORD }} diff --git a/README.md b/README.md index 0b1f75e..6e0873c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Gradle Checker Framework Plugin [![License](https://img.shields.io/badge/license-apache%202.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0) -[![Build](https://github.com/jaredsburrows/gradle-checker-framework-plugin/workflows/build/badge.svg)](https://github.com/jaredsburrows/gradle-checker-framework-plugin/actions) +[![Build](https://github.com/jaredsburrows/gradle-checker-framework-plugin/actions/workflows/build.yml/badge.svg)](https://github.com/jaredsburrows/gradle-checker-framework-plugin/actions/workflows/build.yml) [![Twitter Follow](https://img.shields.io/twitter/follow/jaredsburrows.svg?style=social)](https://twitter.com/jaredsburrows) This plugin configures `JavaCompile` tasks to use the [Checker Framework](https://checkerframework.org). @@ -17,7 +17,7 @@ This plugin configures `JavaCompile` tasks to use the [Checker Framework](https: ```groovy buildscript { repositories { - jcenter() + mavenCentral() } dependencies { @@ -27,13 +27,13 @@ buildscript { apply plugin: 'com.jaredsburrows.checkerframework' ``` -Release versions are available in the [JFrog Bintray repository](https://jcenter.bintray.com/com/jaredsburrows/gradle-checker-framework-plugin/). +Release versions are available in the [Sonatype's release repository](https://repo1.maven.org/maven2/com/jaredsburrows/gradle-checker-framework-plugin/). **Snapshot:** ```groovy buildscript { repositories { - maven { url 'https://oss.jfrog.org/artifactory/oss-snapshot-local/' } + maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } } dependencies { @@ -43,7 +43,7 @@ buildscript { apply plugin: 'com.jaredsburrows.checkerframework' ``` -Snapshot versions are available in the [JFrog Artifactory repository](https://oss.jfrog.org/artifactory/libs-snapshot/com/jaredsburrows/gradle-checker-framework-plugin/). +Snapshot versions are available in the [Sonatype's snapshots repository](https://oss.sonatype.org/content/repositories/snapshots/com/jaredsburrows/gradle-checker-framework-plugin/). ## Configuration @@ -65,17 +65,18 @@ By default, only the `NullnessChecker` is enabled. You can find out what checkers are available in the [Checker Framework Manual](https://checkerframework.org/manual/#introduction). ## License +``` +Copyright (C) 2017 Jared Burrows - Copyright (C) 2017 Jared Burrows - - Licensed 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 +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +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. +``` diff --git a/build.gradle b/build.gradle index 259c7ce..86bc98d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,11 +1,10 @@ plugins { - id 'com.jfrog.artifactory' version '4.18.3' - id 'com.jfrog.bintray' version '1.8.5' - id 'com.github.ben-manes.versions' version '0.36.0' - id 'com.gradle.plugin-publish' version '0.12.0' + id 'com.vanniktech.maven.publish' version '0.19.0' + id 'com.gradle.plugin-publish' version '0.21.0' + id 'com.github.ben-manes.versions' version '0.42.0' id 'java-gradle-plugin' + id 'java-library' id 'groovy' - id 'maven-publish' } repositories { @@ -42,4 +41,3 @@ dependencies { } apply from: 'gradle/compile.gradle' -apply from: 'gradle/publish.gradle' diff --git a/gradle/publish.gradle b/gradle/publish.gradle deleted file mode 100644 index 0ed79cc..0000000 --- a/gradle/publish.gradle +++ /dev/null @@ -1,180 +0,0 @@ -def pomConfig = { - resolveStrategy = Closure.DELEGATE_FIRST - name POM_ARTIFACT_ID - description POM_DESCRIPTION - url POM_URL - - issueManagement { - system POM_ISSUE_SYSTEM - url POM_ISSUE_URL - } - - scm { - url POM_SCM_URL - connection POM_SCM_CONNECTION - developerConnection POM_SCM_DEV_CONNECTION - } - - licenses { - license { - name POM_LICENCE_NAME - url POM_LICENCE_URL - distribution POM_LICENCE_DIST - } - } - - developers { - developer { - id POM_DEVELOPER_ID - name POM_DEVELOPER_NAME - email POM_DEVELOPER_EMAIL - } - } -} - -task docsJar(type: Jar, dependsOn: groovydoc) { - group = 'Publications' - description = 'Create jar of documentation.' - archiveClassifier = 'docs' - from groovydoc.destinationDir -} - -task sourcesJar(type: Jar, dependsOn: classes) { - group = 'Publications' - description = 'Create jar of sources.' - archiveClassifier = 'sources' - from sourceSets.main.allSource -} - -task testsJar(type: Jar) { - group = 'Publications' - description = 'Create jar of tests.' - archiveClassifier = 'tests' - from sourceSets.test.output -} - -task reportsZip(type: Zip, dependsOn: check) { - group = 'Publications' - description = 'Create a zip of all reports.' - archiveClassifier = 'reports' - from reporting.baseDir -} - -// Local published to ~/.m2 - mavenLocal() -publishing { - repositories { - mavenLocal() - } - - publications { - maven(MavenPublication) { - from components.java // includes main 'artifact jar' - artifact docsJar - artifact sourcesJar - artifact testsJar - artifact reportsZip - - groupId GROUP - artifactId POM_ARTIFACT_ID - version VERSION_NAME - - pom.withXml { - // Add parent POM information - asNode().children().first() + pomConfig - } - } - } -} -publish.dependsOn jar, docsJar, sourcesJar, testsJar, reportsZip -publish.dependsOn 'generatePomFileForMavenPublication' - -// Snapshots published to JFrog Artifactory repository -artifactory { - contextUrl = 'https://oss.jfrog.org' - - publish { - repository { - repoKey = 'oss-snapshot-local' - username = project.properties['BINTRAY_USERNAME'] ?: System.getenv('BINTRAY_USERNAME') - password = project.properties['BINTRAY_API_KEY'] ?: System.getenv('BINTRAY_API_KEY') - } - - defaults { - publications 'maven' - } - } - - resolve { - repository { - repoKey = 'libs-release' - } - } -} -artifactoryPublish.dependsOn jar, docsJar, sourcesJar, testsJar, reportsZip -artifactoryPublish.dependsOn 'generatePomFileForMavenPublication' - -// Publishes to JFrog Bintray's JCenter repository -bintray { - user = project.properties['BINTRAY_USERNAME'] ?: System.getenv('BINTRAY_USERNAME') - key = project.properties['BINTRAY_API_KEY'] ?: System.getenv('BINTRAY_API_KEY') - publications = ['maven'] - publish = true - - pkg { - repo = 'maven' - name = POM_ARTIFACT_ID - desc = POM_DESCRIPTION - websiteUrl = POM_URL - issueTrackerUrl = POM_ISSUE_URL - vcsUrl = POM_URL - labels = ['gradle', 'plugin', 'checker', 'framework'] - githubRepo = BINTRAY_GITHUB_REPO - githubReleaseNotesFile = 'README.md' - - version { - name = VERSION_NAME - desc = POM_DESCRIPTION - released = new Date() - vcsTag = VERSION_NAME - - mavenCentralSync { - sync = false - user = project.properties['SONATYPE_USERNAME'] ?: System.getenv('SONATYPE_USERNAME') - password = project.properties['SONATYPE_PASSWORD'] ?: System.getenv('SONATYPE_PASSWORD') - close = '1' - } - } - } -} -bintrayUpload.dependsOn jar, docsJar, sourcesJar, testsJar, reportsZip -bintrayUpload.dependsOn 'generatePomFileForMavenPublication' - -// Publishes to Gradle plugins repository -gradlePlugin { - plugins { - checkerFrameworkPlugin { - id = PLUGIN_NAME - implementationClass = PLUGIN_NAME_CLASS - } - } -} -pluginBundle { - website = POM_URL - vcsUrl = POM_URL - description = POM_DESCRIPTION - tags = bintray.pkg.labels - - plugins { - checkerFrameworkPlugin { - displayName = POM_NAME - } - } -} -publishPlugins.dependsOn jar, docsJar, sourcesJar, testsJar, reportsZip -publishPlugins.dependsOn 'generatePomFileForMavenPublication' - -// Publish to both Bintray and Gradle repositories -task release(dependsOn: [bintrayUpload, publishPlugins]) { - group = 'Publishing' - description = 'Publish to JFrog Jcenter\'s Brintray and Gradle Plugins Repositories.' -}