{"id":51012,"date":"2025-07-29T08:52:36","date_gmt":"2025-07-29T08:52:36","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=51012"},"modified":"2025-07-30T06:50:13","modified_gmt":"2025-07-30T06:50:13","slug":"artifactory-using-gradle-and-uploading-artifacts-to-artifactory","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/artifactory-using-gradle-and-uploading-artifacts-to-artifactory\/","title":{"rendered":"Artifactory: using Gradle and Uploading Artifacts to Artifactory"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-by-step-guide-creating-a-java-project-with-gr\">Step-by-Step Guide: Creating a Java Project with Gradle and Uploading Artifacts to Artifactory<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">1. Install Prerequisites<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Java JDK:<\/strong> Ensure Java (preferably JDK 17 or newer) is installed. Check with <code>java -version<\/code>.<\/li>\n\n\n\n<li><strong>Gradle:<\/strong> Install Gradle (version 8+ recommended). Check with <code>gradle -version<\/code>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">2. Create a New Java Project Using Gradle<\/h2>\n\n\n\n<p>Open your terminal and execute:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">text<code>gradle init --type java-application\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Follow the interactive prompts to choose Java as the language and select other defaults as needed.<\/li>\n\n\n\n<li>This command will generate a new Gradle Java project with a standard directory structure<a href=\"https:\/\/docs.gradle.org\/current\/samples\/sample_building_java_applications.html\" target=\"_blank\" rel=\"noreferrer noopener\">1<\/a><a href=\"https:\/\/docs.gradle.org\/current\/userguide\/part1_gradle_init.html\" target=\"_blank\" rel=\"noreferrer noopener\">2<\/a><a href=\"https:\/\/www.baeldung.com\/gradle-building-a-java-app\" target=\"_blank\" rel=\"noreferrer noopener\">3<\/a><a href=\"https:\/\/www.arika.dev\/posts\/how-to-publish-to-jfrog-artifactory-using-gradle\/\" target=\"_blank\" rel=\"noreferrer noopener\">4<\/a>.<\/li>\n<\/ul>\n\n\n\n<p>Alternatively, you can manually create a folder, navigate into it, and execute <code>gradle init<\/code> to set up your project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Build the Project<\/h2>\n\n\n\n<p>Navigate into your project folder (if not already there):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">text<code>cd your-project-name\n<\/code><\/pre>\n\n\n\n<p>Build and test your project:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">text<code>gradle build\n<\/code><\/pre>\n\n\n\n<p>You\u2019ll find the generated JAR in <code>build\/libs<\/code> folder.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Add Artifactory Publishing Support<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">a. Apply the Artifactory Plugin<\/h2>\n\n\n\n<p>Add the following to your <code>build.gradle<\/code> (Groovy DSL):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">groovy<code>plugins {\n    id 'java'\n    id 'maven-publish'\n    id 'com.jfrog.artifactory' version '5.2.0' <em>\/\/ Use the latest compatible version<\/em>\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">b. Configure Artifactory Publishing<\/h2>\n\n\n\n<p>Add this to your <code>build.gradle<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">groovy<code>publishing {\n    publications {\n        mavenJava(MavenPublication) {\n            from components.java\n        }\n    }\n}\n\nartifactory {\n    contextUrl = 'https:\/\/artifactory.example.com\/artifactory' <em>\/\/ &lt;-- your Artifactory URL<\/em>\n    publish {\n        repository {\n            repoKey = 'libs-release-local' <em>\/\/ or your repository key<\/em>\n            username = findProperty('artifactory_user') ?: System.getenv('ARTIFACTORY_USER')\n            password = findProperty('artifactory_password') ?: System.getenv('ARTIFACTORY_PASSWORD')\n            maven = true\n        }\n        defaults {\n            publications('mavenJava')\n        }\n    }\n}\n<\/code><\/pre>\n\n\n\n<p><strong>Important:<\/strong> Never hardcode credentials. Use Gradle properties files (<code>~\/.gradle\/gradle.properties<\/code>) or environment variables to provide <code>artifactory_user<\/code> and <code>artifactory_password<\/code><a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/github.com\/jfrog\/artifactory-gradle-plugin\/blob\/main\/README.md\">5<\/a><a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/docs.jfrog-applications.jfrog.io\/ci-and-sdks\/ci-integrations\/artifactory-gradle-plugin\">6<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">c. Optional: Add Snapshots Repo<\/h2>\n\n\n\n<p>If you need to deploy snapshot versions, add a similar block for a snapshot repository with the appropriate <code>repoKey<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Publish to Artifactory<\/h2>\n\n\n\n<p>Deploy your artifact to Artifactory by running:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">text<code>gradle artifactoryPublish\n<\/code><\/pre>\n\n\n\n<p>If everything is set up correctly, your artifact will be uploaded to the specified location in Artifactory<a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/stackoverflow.com\/questions\/22352475\/upload-artifact-to-artifactory-using-gradle\">7<\/a><a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/docs.jfrog-applications.jfrog.io\/ci-and-sdks\/ci-integrations\/artifactory-gradle-plugin\">6<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Summary Table<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Step<\/th><th>Command\/Action<\/th><\/tr><\/thead><tbody><tr><td>New Gradle Project<\/td><td><code>gradle init --type java-application<\/code><\/td><\/tr><tr><td>Build Project<\/td><td><code>gradle build<\/code><\/td><\/tr><tr><td>Add Artifactory Plugin<\/td><td>Edit <code>build.gradle<\/code><\/td><\/tr><tr><td>Configure Publishing<\/td><td>Edit <code>build.gradle<\/code>\/set credentials<\/td><\/tr><tr><td>Deploy Artifact<\/td><td><code>gradle artifactoryPublish<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>With these steps, you can create a new Java Gradle project and publish its build artifacts directly to your Artifactory server in a secure and repeatable manner<a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/docs.gradle.org\/current\/samples\/sample_building_java_applications.html\">1<\/a><a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/stackoverflow.com\/questions\/22352475\/upload-artifact-to-artifactory-using-gradle\">7<\/a><a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/github.com\/jfrog\/artifactory-gradle-plugin\/blob\/main\/README.md\">5<\/a><a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/docs.jfrog-applications.jfrog.io\/ci-and-sdks\/ci-integrations\/artifactory-gradle-plugin\">6<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Another Method<\/h2>\n\n\n\n<p>Here is a <strong>step-by-step guide<\/strong> to create a new Java project using <strong>Gradle<\/strong> and configure it to <strong>upload artifacts to JFrog Artifactory<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>1\ufe0f\u20e3 Install Prerequisites<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Java JDK<\/strong> (version 8+)<\/li>\n\n\n\n<li><strong>Gradle<\/strong> (latest version recommended)<\/li>\n\n\n\n<li><strong>Artifactory URL &amp; credentials<\/strong> (from your DevOps\/admin team)<\/li>\n<\/ul>\n\n\n\n<p>Verify installation:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">java -version\ngradle -v\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>2\ufe0f\u20e3 Create a New Gradle Java Project<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Option A: Using Gradle CLI<\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">gradle init --type java-application\n<\/code><\/span><\/pre>\n\n\n<p>Follow prompts:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Project type:<\/strong> <code>application<\/code><\/li>\n\n\n\n<li><strong>Language:<\/strong> <code>Java<\/code><\/li>\n\n\n\n<li><strong>Build script DSL:<\/strong> <code>Groovy<\/code> or <code>Kotlin<\/code><\/li>\n<\/ul>\n\n\n\n<p>This will create:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">build.gradle\nsettings.gradle\nsrc\/main\/java\nsrc\/test\/java\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>3\ufe0f\u20e3 Configure <code>build.gradle<\/code> for Publishing<\/strong><\/h2>\n\n\n\n<p>Open <code>build.gradle<\/code> and make the following changes:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 Apply Required Plugins<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">plugins {\n    id <span class=\"hljs-string\">'java'<\/span>\n    id <span class=\"hljs-string\">'maven-publish'<\/span>\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 Configure Group, Version &amp; Artifact Name<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">group = <span class=\"hljs-string\">'com.example'<\/span>\nversion = <span class=\"hljs-string\">'1.0.0'<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 Setup Artifactory Publishing<\/h3>\n\n\n\n<p>Add this to <code>build.gradle<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">publishing {\n    publications {\n        mavenJava(MavenPublication) {\n            <span class=\"hljs-keyword\">from<\/span> components.java\n            groupId = <span class=\"hljs-string\">'com.example'<\/span>\n            artifactId = <span class=\"hljs-string\">'my-artifact'<\/span>\n            version = <span class=\"hljs-string\">'1.0.0'<\/span>\n        }\n    }\n\n    repositories {\n        maven {\n            url = uri(<span class=\"hljs-string\">\"https:\/\/your-artifactory-domain\/artifactory\/libs-release-local\"<\/span>)\n            credentials {\n                username = project.findProperty(<span class=\"hljs-string\">\"artifactory_user\"<\/span>) ?: <span class=\"hljs-string\">\"your-username\"<\/span>\n                password = project.findProperty(<span class=\"hljs-string\">\"artifactory_password\"<\/span>) ?: <span class=\"hljs-string\">\"your-password\"<\/span>\n            }\n        }\n    }\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>4\ufe0f\u20e3 Store Credentials Securely<\/strong><\/h2>\n\n\n\n<p>Instead of hardcoding, use <code>gradle.properties<\/code>:<\/p>\n\n\n\n<p>\ud83d\udcc2 <code>~\/.gradle\/gradle.properties<\/code><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">artifactory_user=admin\nartifactory_password=your-api-key-or-password\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>5\ufe0f\u20e3 Build the Artifact<\/strong><\/h2>\n\n\n\n<p>Run:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">gradle clean build\n<\/code><\/span><\/pre>\n\n\n<p>Output: JAR file inside <code>build\/libs\/my-artifact-1.0.0.jar<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>6\ufe0f\u20e3 Publish to Artifactory<\/strong><\/h2>\n\n\n\n<p>Run:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">gradle publish\n<\/code><\/span><\/pre>\n\n\n<p>\u2705 This uploads the JAR to your Artifactory repository.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>7\ufe0f\u20e3 Verify Upload<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open Artifactory web UI<\/li>\n\n\n\n<li>Navigate to your repository (<code>libs-release-local<\/code>)<\/li>\n\n\n\n<li>Confirm <code>my-artifact-1.0.0.jar<\/code> is uploaded.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>8\ufe0f\u20e3 (Optional) Use the JFrog Gradle Plugin<\/strong><\/h2>\n\n\n\n<p>JFrog provides a dedicated plugin for advanced features like build-info and CI\/CD integration.<\/p>\n\n\n\n<p>Add to <code>build.gradle<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">plugins {\n    id <span class=\"hljs-string\">\"com.jfrog.artifactory\"<\/span> version <span class=\"hljs-string\">\"5.2.0\"<\/span>\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Configure:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">artifactory {\n    contextUrl = <span class=\"hljs-string\">\"https:\/\/your-artifactory-domain\/artifactory\"<\/span>\n    publish {\n        repository {\n            repoKey = <span class=\"hljs-string\">\"libs-release-local\"<\/span>\n            username = <span class=\"hljs-string\">\"${artifactory_user}\"<\/span>\n            password = <span class=\"hljs-string\">\"${artifactory_password}\"<\/span>\n        }\n        defaults {\n            publications(<span class=\"hljs-string\">'mavenJava'<\/span>)\n        }\n    }\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Publish:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">gradle artifactoryPublish\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udccc <strong>Summary<\/strong><\/h2>\n\n\n\n<p>\u2705 You created a Java project using Gradle<br>\u2705 Configured it to upload artifacts to JFrog Artifactory<br>\u2705 Secured credentials with <code>gradle.properties<\/code><br>\u2705 Used <code>gradle publish<\/code> to push JAR to Artifactory<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Step-by-Step Guide: Creating a Java Project with Gradle and Uploading Artifacts to Artifactory 1. Install Prerequisites 2. Create a New Java Project Using Gradle Open your terminal and execute: textgradle&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4879],"tags":[],"class_list":["post-51012","post","type-post","status-publish","format-standard","hentry","category-artifactory"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=51012"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51012\/revisions"}],"predecessor-version":[{"id":51013,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51012\/revisions\/51013"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=51012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=51012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=51012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}