{"id":15056592,"url":"https://github.com/codearte/gradle-nexus-staging-plugin","last_synced_at":"2025-10-04T20:00:14.168Z","repository":{"id":27903162,"uuid":"31394861","full_name":"Codearte/gradle-nexus-staging-plugin","owner":"Codearte","description":"Automatize releasing Gradle projects to Maven Central.","archived":false,"fork":false,"pushed_at":"2022-10-22T15:19:32.000Z","size":636,"stargazers_count":174,"open_issues_count":18,"forks_count":26,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-05-19T22:09:09.928Z","etag":null,"topics":["artifacts","cd","ci","continuous-delivery","gradle-plugin","groovy","jar","mavencentral","nexus"],"latest_commit_sha":null,"homepage":"","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"xiaonanln/goworld","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Codearte.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-26T23:46:15.000Z","updated_at":"2025-04-09T07:56:39.000Z","dependencies_parsed_at":"2022-08-07T13:01:18.617Z","dependency_job_id":null,"html_url":"https://github.com/Codearte/gradle-nexus-staging-plugin","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/Codearte/gradle-nexus-staging-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codearte%2Fgradle-nexus-staging-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codearte%2Fgradle-nexus-staging-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codearte%2Fgradle-nexus-staging-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codearte%2Fgradle-nexus-staging-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Codearte","download_url":"https://codeload.github.com/Codearte/gradle-nexus-staging-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Codearte%2Fgradle-nexus-staging-plugin/sbom","scorecard":{"id":31596,"data":{"date":"2025-08-11","repo":{"name":"github.com/Codearte/gradle-nexus-staging-plugin","commit":"bbb2ba969e9da89943c5878261eebacba8a7b695"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":1,"reason":"Found 2/20 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T19:14:32.950Z","repository_id":27903162,"created_at":"2025-08-14T19:14:32.950Z","updated_at":"2025-08-14T19:14:32.950Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278366633,"owners_count":25975090,"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","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["artifacts","cd","ci","continuous-delivery","gradle-plugin","groovy","jar","mavencentral","nexus"],"created_at":"2024-09-24T21:53:50.799Z","updated_at":"2025-10-04T20:00:14.148Z","avatar_url":"https://github.com/Codearte.png","language":"Groovy","readme":"# Gradle Nexus Staging plugin\n[![Build Status](https://travis-ci.org/Codearte/gradle-nexus-staging-plugin.svg?branch=master)](https://travis-ci.org/Codearte/gradle-nexus-staging-plugin)\n[![Windows Build Status](https://ci.appveyor.com/api/projects/status/github/Codearte/gradle-nexus-staging-plugin?branch=master\u0026svg=true)](https://ci.appveyor.com/project/szpak/gradle-nexus-staging-plugin/)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.codearte.gradle.nexus/gradle-nexus-staging-plugin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.codearte.gradle.nexus/gradle-nexus-staging-plugin)\n[![Plugin Portal](https://img.shields.io/maven-metadata/v?label=Plugin\u0026color=blue\u0026metadataUrl=https://plugins.gradle.org/m2/io/codearte/nexus-staging/io.codearte.nexus-staging.gradle.plugin/maven-metadata.xml)](https://plugins.gradle.org/plugin/io.codearte.nexus-staging)\n\nA gradle plugin providing tasks to close and promote/release staged repositories. It allows to do a full artifacts release to Maven Central through\n[Sonatype OSSRH](http://central.sonatype.org/pages/ossrh-guide.html) (Open Source Software Repository Hosting) without the need to use Nexus GUI (to close and release\nartifacts/repository).\n\n## MAINTENANCE MODE\n\n**IMPORTANT. To make releasing to Maven Central even easier, I and Marc Phillip (the author of nexus-publish-plugin) combined forces to create a next generation, unified, 2-in-1 plugin - [gradle-nexus-publish-plugin](https://github.com/gradle-nexus/publish-plugin/). It is a recommended solution, as our development effort will be put in that new plugin. See my [blog post](https://blog.solidsoft.pl/2021/02/26/unified-gradle-projects-releasing-to-maven-central-in-2021-migration-guide/) and the official [migration guide](https://github.com/gradle-nexus/publish-plugin/wiki/Migration-from-gradle_nexus_staging-plugin---nexus_publish-plugin-duo)**.\n\nThank you for over 5 years of releasing with my plugin!\n\n## Quick start\n\nAdd gradle-nexus-staging-plugin to the `buildscript` dependencies in your build.gradle file for root project:\n\n    buildscript {\n        repositories {\n            mavenCentral()\n            //Needed only for SNAPSHOT versions\n            //maven { url \"http://oss.sonatype.org/content/repositories/snapshots/\" }\n        }\n        dependencies {\n            classpath \"io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.30.0\"\n        }\n    }\n\nApply the plugin:\n\n    apply plugin: 'io.codearte.nexus-staging'\n\nConfigure it:\n\n    nexusStaging {\n        serverUrl = \"https://s01.oss.sonatype.org/service/local/\" //required only for projects registered in Sonatype after 2021-02-24\n        packageGroup = \"org.mycompany.myproject\" //optional if packageGroup == project.getGroup()\n        stagingProfileId = \"yourStagingProfileId\" //when not defined will be got from server using \"packageGroup\"\n    }\n\nAfter successful archives upload (with [`maven`](https://gradle.org/docs/current/userguide/maven_plugin.html),\n[`maven-publish`](https://gradle.org/docs/current/userguide/publishing_maven.html) or\n[`nexus`](https://github.com/bmuschko/gradle-nexus-plugin/) plugin) to Sonatype OSSRH call:\n\n    ./gradlew closeAndReleaseRepository\n\nto close staging repository and promote/release it and its artifacts. If a synchronization with Maven Central was enabled the artifacts should\nautomatically appear into Maven Central within several minutes.\n\n### New plugin syntax\n\nIn addition to Maven Central the plugin is available also from the [Plugin Portal](https://plugins.gradle.org/plugin/io.codearte.nexus-staging) and (in most cases) can be applied in a simplified way:\n\n    plugins {\n        id 'io.codearte.nexus-staging' version '0.30.0'\n    }\n\nBuildscript and `apply plugin` sections can be ommited in that case.\n\n### Multi-project build\n\nThe plugin itself does not upload any artifacts. It only closes/promotes a repository with all already uploaded using the `maven` or `maven-publish` plugin artifacts (in the same or previous Gradle execution). Therefore it is enough to apply `io.codearte.nexus-staging` only on the root project in a multi-project build.\n\n### Travis configuration\n\nStruggling with errors while releasing from Travis? See [this FAQ point](#2-why-my-release-build-on-travis-suddenly-started-to-fail-with-wrong-number-of-received-repositories) for explaination and [my blog post](https://solidsoft.wordpress.com/2019/02/22/reliable-releasing-to-maven-central-from-travis-using-gradle-2019-edition/) for sample configuration.\n\n## Tasks\n\nThe plugin provides three main tasks:\n\n - `closeRepository` - closes an open repository with the uploaded artifacts. There should be just one open repository available in the staging\n profile (possible old/broken repositories can be dropped with Nexus GUI)\n - `releaseRepository` - releases a closed repository (required to put artifacts to Maven Central aka The Central Repository)\n - `closeAndReleaseRepository` - closes and releases a repository (an equivalent to `closeRepository releaseRepository`)\n\nAnd one additional:\n\n - `getStagingProfile` - gets and displays a staging profile id for a given package group. This is a diagnostic task to get the value and put it\ninto the configuration closure as `stagingProfileId`.\n\nIt has to be mentioned that calling Nexus REST API ends immediately, but closing/release operations takes a moment. Therefore, to make it possible\nto call `closeRepository releaseRepository` together (or use `closeAndReleaseRepository`) there is a built-in retry mechanism.\n\n**Deprecation note**. Starting with version 0.8.0 `promoteRepository` and `closeAndPromoteRepository` are marked as deprecated and will be removed\nin the one of the future versions. `releaseRepository` and `closeAndReleaseRepository` can be used as drop-in replacements. The reasons behind that\nchange can be found in the corresponding [issue](https://github.com/Codearte/gradle-nexus-staging-plugin/issues/50).\n\n## Configuration\n\nThe plugin defines the following configuration properties in the `nexusStaging` closure:\n\n - `serverUrl` (optional) - the stable release repository URL - by default Sonatype OSSRH - `https://oss.sonatype.org/service/local/`\n\n\u003e **Important** - Users registered in Sonatype after 24 February 2021 need to customize the server URL:\n``serverUrl = \"https://s01.oss.sonatype.org/service/local/\"``\n\n - `username` (optional) - the username to the server\n - `password` (optional) - the password to the server (an auth token [can be used](https://solidsoft.wordpress.com/2015/09/08/deploy-to-maven-central-using-api-key-aka-auth-token/) instead)\n - `packageGroup` (optional) - the package group as registered in Nexus staging profile - by default set to a project group (has to be overridden\nif packageGroup in Nexus was requested for a few packages in the same domain)\n - `stagingProfileId` (optional) - the staging profile used to release given project - can be get with the `getStagingProfile` task - when not set\none additional request is send to the Nexus server to determine the value using `packageGroup`\n - `numberOfRetries` (optional) - the number of retries when waiting for a repository state transition to finish - by default `20`\n - `delayBetweenRetriesInMillis` (optional) - the delay between retries - by default `2000` milliseconds\n - `repositoryDescription` (optional) - staging repository description in close/release operations (see [#63](https://github.com/Codearte/gradle-nexus-staging-plugin/pull/63) for more information)\n - `stagingRepositoryId` (optional, since 0.20.0) - the explicitly created staging repository with artifacts to improve build reliability -\nrequires external mechanism (e.g. [nexus-publish-plugin](https://github.com/marcphilipp/nexus-publish-plugin/)) to enhance a Gradle task\nto use it for uploading/publishing artifacts (see [#77](https://github.com/Codearte/gradle-nexus-staging-plugin/issues/77))\n\nFor the sensible configuration example see the plugin's own release [configuration](gradle/cdeliveryboy-release.gradle).\n\n## Server credentials\n\nProduction Nexus instances usually require an user to authenticate before perform staging operations. In the nexus-staging plugin there are few\nways to provide credentials:\n - manually set an username and a password in the `nexusStaging` configuration closure (probably reading them from Gradle or system properties)\n - provide the authentication section in `MavenDeployer` (from the Gradle `maven` plugin) - it will be reused by the nexus-staging plugin\n - set the Gradle properties `nexusUsername` abd `nexusPassword` (via a command line or `~/.gradle/gradle.properties`) - properties with these\nnames are also used by [gradle-nexus-plugin](https://github.com/bmuschko/gradle-nexus-plugin/).\n\nThe first matching strategy win. If you need to set an empty password use `''` (an empty string) instead of null.\n\n## FAQ\n\n### 1. Why do I get `Wrong number of received repositories in state 'open'. Expected 1, received 2`?\n\nThere may be a few reasons to get this.\n\n1. Ensure using the [Nexus UI](https://oss.sonatype.org/) that there are no old open staging repositories from the previous executions. If yes, just\ndrop them suing the UI and try again. This is quite common during the initial experiments with the plugin.\n\n2. It takes some time to close and/or promote a staging repository in Nexus, especially with multiple artifacts. The plugin has a built-in retry\nmechanism, however, the default value can be too [low](https://github.com/Codearte/gradle-nexus-staging-plugin/issues/12), especially for\nthe multiproject build. To confirm that enable logging at the info level in Gradle (using the `--info` or `-i` build parameter). You should see log\nmessages similar to `Attempt 8/8 failed.`. If yes, increase the timeout using the `numberOfRetries` or `delayBetweenRetriesInMillis` configuration\nparameters.\n\n3. An another reason to get the aforementioned error is releasing more than one project using the same Nexus staging repository simultaneously\n(usually automatically from a Continuous Delivery pipeline from a Continuous Integration server). Unfortunately Gradle does not provide a mechanism\nto track/manage staging repository where the artifacts are being uploaded. Therefore, it is hard to distinguish on closing the own/current repository\nfrom the one created by our another project. There is an [idea](https://github.com/Codearte/gradle-nexus-staging-plugin/issues/29) how it could be\nhandled using the Nexus API. Please comment in that [issue](https://github.com/Codearte/gradle-nexus-staging-plugin/issues/29) if you are in that\nsituation.\n\n4. You are releasing from Travis. See the next point.\n\n### 2. Why my release build on Travis suddenly started to fail with `wrong number of received repositories...`'?\n\nIf your Travis build started to fail around autumn 2018 it's probably a problem reported in [#76](https://github.com/Codearte/gradle-nexus-staging-plugin/issues/76).\nTo cut a long story short:\n - Gradle does [not support](https://github.com/gradle/gradle/issues/5711) uploading/publishing to explicitly created staging repositories in Nexus\n - gradle-nexus-staging-plugin had been using heuristics to find the right implicitly created staging repository in Nexus (which - with some limitations -\nworked fine in most cases)\n - Travis changed their infrastructure in autumn 2018 which [resulted](https://github.com/travis-ci/travis-ci/issues/9555#issuecomment-428799836)\nin using different IP addresses for the same build and - as a result - creation of multiple implicitly created staging repositories on upload/publishing for the same build\n - Marc Philipp created [nexus-publish-plugin](https://github.com/marcphilipp/nexus-publish-plugin/) to enhance publishing in Gradle which seamlessly\nintegrates with gradle-nexus-staging-plugin and \"fixes\" a problem\n\nFor releasing from Travis (and in general) it's recommended to add [nexus-publish-plugin](https://github.com/marcphilipp/nexus-publish-plugin/) to your project\nand use its `publishToNexus` task to upload/publish artifacts to Nexus (instead of vanilla `publish...` from Gradle). It integrates seamlessly with\ngradle-nexus-staging-plugin to release to Maven Central (especially with 0.20.0+) - noother changes are required. What's more, with that\n[enhancement](https://github.com/marcphilipp/nexus-publish-plugin/issues/11) implemented the releasing to Nexus will be even more reliable\n(e.g. an ability to run multiple releases for the same staging profile). See [my blog post](https://solidsoft.wordpress.com/2019/02/22/reliable-releasing-to-maven-central-from-travis-using-gradle-2019-edition/) for sample configuration.\n\nHowever, there is one caveat. `uploadArchives` from the `maven` plugin is [not supported](https://github.com/marcphilipp/nexus-publish-plugin/issues/8)\nby nexus-publish-plugin (only `publish...` from `maven-publish`).\n\n### 3. Why do I get the error ``403: Forbidden`` when trying to close or release the repository?\n\nFirst thing is to make sure that your credentials are correctly set, using one of the methods explained in the `Server Credentials` section.\n\nIf your credentials are correct and you still get this error, most likely it is happenning because the repository server for you account is different. As of 24 February 2021, accounts created after this date are assigned to a new nexus repository server (https://s01.oss.sonatype.org/).\n\nTo fix this, you need to set `serverUrl = \"https://s01.oss.sonatype.org/service/local/\"` on the ``nexusStaging`` block on your gradle build file.\n\n## Notable users\n\nThe plugin is used by [hundreds of projects](https://github.com/search?q=io.codearte.nexus-staging\u0026type=Code\u0026utf8=%E2%9C%93) around the web.\n\nJust to mention a few FOSS projects which leverage the plugin to automatize releasing and Continuous Delivery:\n[Frege](https://github.com/Frege/frege-interpreter),\n[Geb](https://github.com/geb/geb),\n[Grails](https://github.com/grails/grails-core),\n[Javers](https://github.com/javers/javers),\n[JSON Assert](https://github.com/marcingrzejszczak/jsonassert),\n[logback-android](https://github.com/tony19/logback-android),\n[Micronaut](https://github.com/micronaut-projects/micronaut-aws),\n[mini2Dx](https://github.com/mini2Dx/minibus),\n[Nextflow](https://github.com/nextflow-io/nextflow) and\n[TestNG](https://github.com/cbeust/testng).\n\nThe plugin is also used by the tools and the libraries created by various more or less known companies including:\n[Allegro](https://github.com/allegro/hermes),\n[Braintree](https://github.com/braintree/braintree_android),\n[Google](https://github.com/google/FreeBuilder),\n[IBM](https://github.com/IBM-UrbanCode/groovy-plugin-utils),\n[PayPal](https://github.com/paypal/PayPal-Java-SDK),\n[Schibsted Spain](https://github.com/scm-spain/karyon-rest-router),\n[TouK](https://github.com/TouK/bubble) and\n[Zalando](https://github.com/zalando-incubator/straw).\n\n## Additional information\n\n[gradle-nexus-staging-plugin](https://github.com/Codearte/gradle-nexus-staging-plugin) was written by Marcin Zajączkowski\nwith the help of the [contributors](https://github.com/Codearte/gradle-nexus-staging-plugin/graphs/contributors).\nThe author can be contacted directly via email: `mszpak ATT wp DOTT pl`.\nThere is also Marcin's blog available: [Solid Soft](http://blog.solidsoft.info) - working code is not enough.\n\nThe PoC leading to the initial version of the plugin was brought to life during one of the hackathons held at [Codearte](http://codearte.io/).\n\nThe first version of the project has been released in 2015 and the plugin seems to be quite stable. Nevertheless, documentation for the Nexus\nstaging REST API and in addition Gradle support for uploading artifacts to selected Nexus staging repositories leaves much to be desired.\nTherefore, the current plugin version is still before 1.0.0.\n\nThe project [changelog](https://github.com/Codearte/gradle-nexus-staging-plugin/releases).\n\nThe plugin is licensed under the terms of [the Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt).\n\n![Stat Counter stats](https://c.statcounter.com/10347937/0/98ac55b0/0/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodearte%2Fgradle-nexus-staging-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodearte%2Fgradle-nexus-staging-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodearte%2Fgradle-nexus-staging-plugin/lists"}