{"id":20652929,"url":"https://github.com/gregoranders/gradle-project-configuration","last_synced_at":"2026-06-06T05:32:14.978Z","repository":{"id":37955313,"uuid":"446938161","full_name":"gregoranders/gradle-project-configuration","owner":"gregoranders","description":"Gradle JAVA Project Configuration Plugin","archived":false,"fork":false,"pushed_at":"2023-09-04T18:56:16.000Z","size":321,"stargazers_count":2,"open_issues_count":6,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-17T10:44:18.584Z","etag":null,"topics":["gradle-plugin","groovy","sonarcloud"],"latest_commit_sha":null,"homepage":"https://gregoranders.github.io/gradle-project-configuration","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gregoranders.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-11T18:32:53.000Z","updated_at":"2023-01-28T11:16:57.000Z","dependencies_parsed_at":"2024-11-16T17:39:33.288Z","dependency_job_id":"3e2210d6-2a02-462b-b66b-8f259bebab66","html_url":"https://github.com/gregoranders/gradle-project-configuration","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregoranders%2Fgradle-project-configuration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregoranders%2Fgradle-project-configuration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregoranders%2Fgradle-project-configuration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregoranders%2Fgradle-project-configuration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gregoranders","download_url":"https://codeload.github.com/gregoranders/gradle-project-configuration/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242753379,"owners_count":20179678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gradle-plugin","groovy","sonarcloud"],"created_at":"2024-11-16T17:39:27.743Z","updated_at":"2025-03-09T21:24:36.970Z","avatar_url":"https://github.com/gregoranders.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gradle Project Configuration Plugin\n\n### Following the principle of *convention over configuration* this Gradle plugin provides default configurations for various plugins of a Gradle JVM project so that you do not need to copy boilerplate code throughout your projects.\n\n#### Compiled using JAVA 17 with 1.8 as target and Gradle 8.1.1\n\n[![Release][release-image]][release-url]\n\n[![License][license-image]][license-url]\n[![Issues][issues-image]][issues-url]\n\n[![ReleaseMain Build][release-build-image]][release-url]\n[![Main Build][main-build-image]][main-url]\n\n[//]: # ([![Development Build][development-build-image]][development-url])\n\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=bugs)][sonarcloud-url]\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=code_smells)][sonarcloud-url]\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=coverage)][sonarcloud-url]\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=vulnerabilities)][sonarcloud-url]\n\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=duplicated_lines_density)][sonarcloud-url]\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=ncloc)][sonarcloud-url]\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=sqale_index)][sonarcloud-url]\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=alert_status)][sonarcloud-url]\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=sqale_rating)][sonarcloud-url]\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=reliability_rating)][sonarcloud-url]\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=gregoranders_gradle-project-configuration\u0026metric=security_rating)][sonarcloud-url]\n\n[![Main Language][language-image]][code-metric-url] [![Languages][languages-image]][code-metric-url] [![Code Size][code-size-image]][code-metric-url] [![Repo-Size][repo-size-image]][code-metric-url]\n\n## How to use\n\n### Using the plugins DSL\n```groovy\nplugins {\n  id \"io.github.gregoranders.project-configuration\" version \"0.0.9\"\n}\n```\n\n### Using legacy plugin application\n```groovy\nbuildscript {\n  repositories {\n    maven {\n      url \"https://plugins.gradle.org/m2/\"\n    }\n  }\n  dependencies {\n    classpath \"io.github.gregoranders:project-configuration:0.0.9\"\n  }\n}\n\napply plugin: \"io.github.gregoranders.project-configuration\"\n```\n\n## Supported plugins\n\n* [IDEA][idea-plugin-url]\n* [Checkstyle][checkstyle-plugin-url]\n* [PMD][pmd-plugin-url]\n* [JaCoCo][jacoco-plugin-url]\n* [SpotBugs][spotbugs-plugin-url]\n* [OWASP Dependency Check][dependencycheck-plugin-url]\n* [Maven Publish][maven-publish-plugin-url]\n* [Signing][signing-plugin-url]\n\n### IDEA\n\nrequired configuration properties\n\n* sourceCompatibility\n\n```groovy\nidea {\n  project {\n    vcs = 'Git'\n    jdkName = \"jdk-${project.sourceCompatibility}\"\n    languageLevel = project.targetCompatibility\n  }\n  module {\n    downloadJavadoc = true\n    downloadSources = true\n  }\n}\n```\n\n### Checkstyle\n\nrequired configuration properties\n\n* checkstyleVersion\n\n```groovy\ncheckstyle {\n  toolVersion = project.rootProject.property('checkstyleVersion')\n  ignoreFailures = false\n}\nproject.tasks.checkstyleTest.enabled = false\n```\n\n### PMD\n\nrequired configuration properties\n\n* pmdVersion\n\noptional configuration properties\n\n* cpdMinimumTokenCount *used for the Copy/Paste detection - default is 10*\n\n```groovy\npmd {\n  consoleOutput = true\n  incrementalAnalysis = true\n  toolVersion = project.rootProject.property('pmdVersion')\n  ignoreFailures = false\n  ruleSets = []\n  ruleSetConfig = project.rootProject.resources.text.fromFile('config/pmd/pmd-rules.xml')\n}\nproject.tasks.register('cpdMain', CPDTask)\nproject.tasks.pmdTest.enabled = false\nproject.check {\n  dependsOn project.tasks.cpdMain\n}\n```\n\n### JaCoCo\n\nrequired configuration properties\n\n* jacocoVersion\n\n```groovy\njacoco {\n  toolVersion = project.rootProject.property('jacocoVersion')\n}\njacocoTestReport {\n  dependsOn project.tasks.test\n  reports {\n    xml.required = true\n    csv.required = true\n    html.required = true\n  }\n}\njacocoTestCoverageVerification {\n  violationRules {\n    rule {\n      limit {\n        counter = 'INSTRUCTION'\n        minimum = 1.0\n      }\n      limit {\n        counter = 'BRANCH'\n        minimum = 1.0\n      }\n      limit {\n        counter = 'LINE'\n        minimum = 1.0\n      }\n      limit {\n        counter = 'METHOD'\n        minimum = 1.0\n      }\n      limit {\n        counter = 'CLASS'\n        minimum = 1.0\n      }\n    }\n  }\n}\nproject.tasks.test {\n  finalizedBy project.tasks.jacocoTestReport\n}\nproject.tasks.check {\n  dependsOn project.tasks.jacocoTestCoverageVerification\n}\n```\n\n### SpotBugs\n\nrequired configuration properties\n\n* spotbugsVersion\n\n```groovy\nspotbugs {\n  toolVersion = project.rootProject.property('spotbugsVersion')\n  ignoreFailures = false\n  effort = 'max'\n  reportLevel = 'low'\n  excludeFilter = project.rootProject.file('config/spotbugs/excludeFilter.xml')\n}\nspotbugsMain {\n  reports {\n    html {\n      outputLocation = project.layout.buildDirectory.file('reports/spotbugs/main/spotbugs.html').get().asFile\n      stylesheet = 'fancy-hist.xsl'\n    }\n    xml {\n      outputLocation = project.layout.buildDirectory.file('reports/spotbugs/main/spotbugs.xml').get().asFile\n    }\n  }\n}\nproject.tasks.spotbugsTest.enabled = false\n```\n\n### OWASP Dependency Check\n\n```groovy\ndependencyCheck {\n  autoUpdate = true\n  failBuildOnCVSS = 1\n  cveValidForHours = 1\n  format = 'ALL'\n  outputDirectory = project.layout.buildDirectory.dir('reports/dependency-check').get().asFile\n  suppressionFile = project.rootProject.file('config/dependency-check/suppressions.xml')\n  analyzers {\n    experimentalEnabled = true\n    archiveEnabled = true\n    jarEnabled = true\n    centralEnabled = true\n    nexusEnabled = false\n    nexusUsesProxy = false\n    nuspecEnabled = false\n    assemblyEnabled = false\n    msbuildEnabled = false\n    golangDepEnabled = false\n    golangModEnabled = false\n    cocoapodsEnabled = false\n    swiftEnabled = false\n    swiftPackageResolvedEnabled = false\n    bundleAuditEnabled = false\n    pyDistributionEnabled = false\n    pyPackageEnabled = false\n    rubygemsEnabled = false\n    opensslEnabled = false\n    cmakeEnabled = false\n    autoconfEnabled = false\n    composerEnabled = false\n    cpanEnabled = false\n    nodeEnabled = false\n  }\n}\nif (System.getenv('CI') == 'true') {\n  check {\n    dependsOn project.tasks.dependencyCheckAnalyze\n  }\n}\n```\n\n### Maven Publish\n\nrequired configuration properties\n\n* url\n* license\n* licenseUrl\n* authorId\n* author\n* email\n* scmUrl\n\n```groovy\npublishing {\n  publications {\n    mavenJava(MavenPublication) {\n      from project.components.java\n      pom {\n        name = project.name\n        description = project.description\n        url = property('url')\n        licenses {\n          license {\n            name = property('license')\n            url = property('licenseUrl')\n          }\n        }\n        developers {\n          developer {\n            id = property('authorId')\n            name = property('author')\n            email = property('email')\n          }\n        }\n        scm {\n          connection = \"scm:git:git://${property('scmUrl')}\"\n          developerConnection = \"scm:git:ssh://${property('scmUrl')}\"\n          url = property('url')\n        }\n      }\n    }\n  }\n  repositories {\n    maven {\n      name = 'Build'\n      url = project.layout.buildDirectory.dir('repos')\n    }\n  }\n}\n```\n\n### Signing\n\nrequired environment variables\n\n* GPG_KEY_ID\n* GPG_KEY\n* GPG_PASSPHRASE\n\n```groovy\nif (System.getenv('GPG_KEY_ID') \u0026\u0026 System.getenv('GPG_KEY') \u0026\u0026 System.getenv('GPG_PASSPHRASE')) {\n  project.signing {\n    useInMemoryPgpKeys(System.getenv('GPG_KEY_ID'), System.getenv('GPG_KEY'), System.getenv('GPG_PASSPHRASE'))\n    if (project.plugins.hasPlugin('maven-publish')) {\n      sign project.publishing.publications\n    }\n  }\n}\n```\n\n[project-url]: https://github.com/users/gregoranders/projects/1\n\n[release-url]: https://github.com/gregoranders/gradle-project-configuration/releases\n\n[main-url]: https://github.com/gregoranders/gradle-project-configuration/tree/main\n\n[development-url]: https://github.com/gregoranders/gradle-project-configuration/tree/development\n\n[code-metric-url]: https://github.com/gregoranders/gradle-project-configuration/search?l=JAVA\n\n[license-url]: https://github.com/gregoranders/gradle-project-configuration/blob/main/LICENSE\n\n[license-image]: https://img.shields.io/github/license/gregoranders/gradle-project-configuration.svg\n\n[issues-url]: https://github.com/gregoranders/gradle-project-configuration/issues\n\n[issues-image]: https://img.shields.io/github/issues-raw/gregoranders/gradle-project-configuration.svg\n\n[release-image]: https://img.shields.io/github/release/gregoranders/gradle-project-configuration\n\n[release-build-image]: https://github.com/gregoranders/gradle-project-configuration/workflows/Release%20CI/badge.svg\n\n[main-build-image]: https://github.com/gregoranders/gradle-project-configuration/workflows/Main%20CI/badge.svg\n\n[development-build-image]: https://github.com/gregoranders/gradle-project-configuration/workflows/Development%20CI/badge.svg\n\n[language-image]: https://img.shields.io/github/languages/top/gregoranders/gradle-project-configuration\n\n[languages-image]: https://img.shields.io/github/languages/count/gregoranders/gradle-project-configuration\n\n[code-size-image]: https://img.shields.io/github/languages/code-size/gregoranders/gradle-project-configuration\n\n[repo-size-image]: https://img.shields.io/github/repo-size/gregoranders/gradle-project-configuration\n\n[sonarcloud-url]: https://sonarcloud.io/summary/new_code?id=gregoranders_gradle-project-configuration\n\n[spock-url]: https://spockframework.org\n\n[checkstyle-plugin-url]: https://docs.gradle.org/current/userguide/checkstyle_plugin.html\n\n[pmd-plugin-url]: https://docs.gradle.org/current/userguide/pmd_plugin.html\n\n[idea-plugin-url]: https://docs.gradle.org/current/userguide/idea_plugin.html\n\n[jacoco-plugin-url]: https://docs.gradle.org/current/userguide/jacoco_plugin.html\n\n[spotbugs-plugin-url]: https://github.com/spotbugs/spotbugs-gradle-plugin\n\n[dependencycheck-plugin-url]: https://github.com/jeremylong/DependencyCheck\n\n[maven-publish-plugin-url]: https://docs.gradle.org/current/userguide/publishing_maven.html\n\n[signing-plugin-url]: https://docs.gradle.org/current/userguide/signing_plugin.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregoranders%2Fgradle-project-configuration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgregoranders%2Fgradle-project-configuration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregoranders%2Fgradle-project-configuration/lists"}