{"id":61689,"date":"2018-11-26T11:00:38","date_gmt":"2018-11-26T09:00:38","guid":{"rendered":"http:\/\/examples.javacodegeeks.com\/?p=61689"},"modified":"2019-04-03T13:59:09","modified_gmt":"2019-04-03T10:59:09","slug":"gradle-hudson-example","status":"publish","type":"post","link":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/","title":{"rendered":"Gradle Hudson Example"},"content":{"rendered":"<p>This post is about integrating Gradle, a programmable build system into Hudson, a Continuous Integration server. We will also take a look at the configuration required to run a simple application.<\/p>\n<h2>1. Introduction<\/h2>\n<h3>1.1. Hudson<\/h3>\n<p>The term &#8216;Continuous Integration&#8217; originated with the Extreme Programming development process, as one of its original twelve practices. Each developer works individually in their Version Control System. This work could soon turn into a pocket of silos if not frequently integrated. The cost of integration has to be less almost non-effort. This lead to Continuous Integration technique and several products were developed to fill this need. These were referred to as CI Server and Hudson is one among them. Hudson monitors the execution of repeated jobs, such as building a software project or jobs run by <code>cron<\/code>. The automated, continuous build increases productivity. Hudson is very easy to configure and has no frills installation. Hudson supports distributed builds and detailed reports for testing. On top of it, it is pretty extensible.\n<\/p>\n<h3>1.2. Gradle<\/h3>\n<p>Gradle is an open-source build automation system that builds upon the concepts of Apache Ant and Apache Maven. It utilizes a Groovy-based domain-specific language (DSL) for declaring the project configuration. It is designed with programmers in mind who are comfortable with scripting than XML configuration. The created tasks are modeled as Directed Acyclic Graph(DAG) which determines the order and conditional execution of tasks. Gradle was designed at the outset for large multi-project builds. It supports incremental builds by identifying which parts of the build tree need to be built and which ones can be reused. The initial plugins were primarily focused on Java, Groovy and Scala development and deployment, but more languages and project workflows have been added since its start.<\/p>\n<h2>2. Hudson Gradle Integration<\/h2>\n<p>In this section, We will see the installation of Hudson and configuring Hudson for a simple Gradle project. Hudson can be downloaded from its <a href=\"http:\/\/eclipse.org\/downloads\/download.php?file=\/hudson\/war\/hudson-3.3.3.war\">website<\/a>. After download, navigate to the downloaded folder and run the below command.<\/p>\n<pre class=\"brush:bash;\">java -jar hudson-3.3.3.war<\/pre>\n<p>Hudson starts up indicating that Initial Setup is required in the console. Navigate to the <a href=\"http:\/\/localhost:8080\/\">index<\/a> page of Hudson CI. The page looks similar to the screenshot below.<\/p>\n<p><figure id=\"attachment_62022\" aria-describedby=\"caption-attachment-62022\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/InitialJCG.jpg\"><img decoding=\"async\" class=\"wp-image-62022 size-full\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/InitialJCG.jpg\" alt=\"Gradle Hudson - Hudson CI Index\" width=\"800\" height=\"387\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/InitialJCG.jpg 800w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/InitialJCG-300x145.jpg 300w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/InitialJCG-768x372.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><figcaption id=\"caption-attachment-62022\" class=\"wp-caption-text\">Hudson CI Index<\/figcaption><\/figure><\/p>\n<p>All the core plugins are recommended to be installed for efficient usage. Along with the Core plugins, the following three plugins need to be installed for our project.<\/p>\n<ul>\n<li>Hudson Git Plugin<\/li>\n<li>Groovy Support Plugin<\/li>\n<li>Gradle Plugin<\/li>\n<\/ul>\n<p>After selecting the plugins, click on the Finish to configure the Hudson installation.<\/p>\n<p>Before proceeding further, Gradle, Git and Java need to be installed in our system. Gradle can be installed from the gradle <a href=\"https:\/\/gradle.org\/install\/#with-a-package-manager\">website<\/a> and I personally recommend using the package manager method. I recommend using the scoop for windows and brew for mac. Please verify Gradle and Java installation with the below commands before proceeding with the rest of sections.<\/p>\n<pre class=\"brush:bash;\">java -version\ngradle -v\n<\/pre>\n<p>The results must be similar to the below screenshot.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p><figure id=\"attachment_62023\" aria-describedby=\"caption-attachment-62023\" style=\"width: 566px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/versionsJCG.jpg\"><img decoding=\"async\" class=\"wp-image-62023 size-full\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/versionsJCG.jpg\" alt=\"Gradle Hudson - Versions\" width=\"566\" height=\"369\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/versionsJCG.jpg 566w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/versionsJCG-300x196.jpg 300w\" sizes=\"(max-width: 566px) 100vw, 566px\" \/><\/a><figcaption id=\"caption-attachment-62023\" class=\"wp-caption-text\">Versions<\/figcaption><\/figure><\/p>\n<p>After verifying the installation, Hudson must be configured to use Gradle, Git and Java. To configure, follow the below steps<\/p>\n<ol>\n<li>Click on Manage Hudson in the Dashboard page(<code>http:\/\/localhost:8080\/<\/code>)<\/li>\n<li>Click on Configure System to navigate to System Configurations.<\/li>\n<li>Scroll towards the JDK installation section and input the paths similar to the below screenshot.<\/li>\n<\/ol>\n<p><figure id=\"attachment_62025\" aria-describedby=\"caption-attachment-62025\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/Hudson_PluginsJCG.jpg\"><img decoding=\"async\" class=\"wp-image-62025 size-full\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/Hudson_PluginsJCG.jpg\" alt=\"Gradle Hudson - Hudson Configuration\" width=\"800\" height=\"386\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/Hudson_PluginsJCG.jpg 800w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/Hudson_PluginsJCG-300x145.jpg 300w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/Hudson_PluginsJCG-768x371.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><figcaption id=\"caption-attachment-62025\" class=\"wp-caption-text\">Hudson Configuration<\/figcaption><\/figure><\/p>\n<p>This configures Java, Gradle and Git from our local system. Alternatively, Gradle can be made to be downloaded from the gradle website by selecting the <code>Install automatically<\/code> checkbox and specifying the Gradle version.<\/p>\n<h3>2.1. Java Project<\/h3>\n<p>Once git has been installed in our environment, a new folder project has to be created. Navigate to the newly created folder and initialize a new repository with <code>git init<\/code> command.<\/p>\n<p>In the git folder, create a project structure similar to the screenshot below with the appropriate files.<\/p>\n<p><figure id=\"attachment_62026\" aria-describedby=\"caption-attachment-62026\" style=\"width: 423px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/project_StructureJCG.jpg\"><img decoding=\"async\" class=\"wp-image-62026 size-full\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/project_StructureJCG.jpg\" alt=\"Gradle Hudson - Project Structure\" width=\"423\" height=\"268\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/project_StructureJCG.jpg 423w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/project_StructureJCG-300x190.jpg 300w\" sizes=\"(max-width: 423px) 100vw, 423px\" \/><\/a><figcaption id=\"caption-attachment-62026\" class=\"wp-caption-text\">Project Structure<\/figcaption><\/figure><\/p>\n<p>Our project involves only three files<\/p>\n<ul>\n<li>build.gradle under the root folder.<\/li>\n<li>log4j.xml under the resources folder.<\/li>\n<li>Main.java under the Hudson folder in the screenshot.<\/li>\n<\/ul>\n<p>We will cover the files in the project below.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>build.gradle<\/em><\/span><\/p>\n<pre class=\"brush:bash;\">apply plugin: 'java'\n\nsourceCompatibility = 1.8\n\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    compile group: 'log4j', name: 'log4j', version: '1.2.17'\n}\n\ngroup 'com.jcg'\nversion '1.0'\n\ntask hudsonJar(type: Jar) {\n    manifest {\n        attributes 'Main-Class': 'com.jcg.hudson.Main'\n    }\n    baseName = 'hudson'\n    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }\n    with jar\n}\n\n<\/pre>\n<ul>\n<li>Plugin Java is applied to indicate the java project.<\/li>\n<li>JDK version is specified as 1.8 using <code>sourceCompatibility<\/code>.<\/li>\n<li>Project dependencies are downloaded from maven repository specified in <code>repositories<\/code> section. Alternatives are jcenter and spring.io.<\/li>\n<li>Dependencies for the project are listed in the <code>dependencies<\/code> section. The application utilizes log4j for logging and is listed as the only dependency.<\/li>\n<li>group and version are used to specify meta information about the project.<\/li>\n<li>Since the project utilizes dependencies, it must be bundled as a fat jar with all the dependencies to ensure it can be executed. For this purpose, a custom jar task is created\n<ul>\n<li>The <code>manifest<\/code> attribute specifies the entry or main class for the application.<\/li>\n<li><code>basename<\/code> indicates the jar name to be used.<\/li>\n<li>All the compile dependencies are collected and zipped using <code>zipTree<\/code>.<\/li>\n<li>This is then fed to the jar pipeline which builds the jar as hudson-1.0.jar.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;\"><em>log4j.xml<\/em><\/span>[ulp id=&#8217;1om4ygalA6VlPl7R&#8217;]<\/p>\n<pre class=\"brush:xml;\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;\n&lt;!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\"&gt;\n&lt;log4j:configuration debug=\"true\"\nxmlns:log4j='http:\/\/jakarta.apache.org\/log4j\/'&gt;\n\n&lt;appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\"&gt;\n&lt;layout class=\"org.apache.log4j.PatternLayout\"&gt;\n&lt;param name=\"ConversionPattern\"\nvalue=\"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n\" \/&gt;\n&lt;\/layout&gt;\n&lt;\/appender&gt;\n\n&lt;root&gt;\n&lt;level value=\"DEBUG\" \/&gt;\n&lt;appender-ref ref=\"console\" \/&gt;\n&lt;\/root&gt;\n\n&lt;\/log4j:configuration&gt;\n<\/pre>\n<ul>\n<li>This is a simple log4j configuration XML file with root logger specified at <code>DEBUG<\/code> level.<\/li>\n<li>A simple console <code>appender<\/code> is configured for the root logger with pattern specifying time and thread which logs the message.<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;\"><em>Main.java<\/em><\/span><\/p>\n<pre class=\"brush:java;\">package com.jcg.hudson;\n\nimport org.apache.log4j.Logger;\n\nimport java.util.stream.IntStream;\n\npublic class Main {\n\nstatic Logger logger = Logger.getLogger(Main.class);\n\npublic static void main(String[] args) {\nIntStream.rangeClosed(1, 10).forEach(token -&gt; {\nlogger.info(\"Counter value is \" + token);\n});\n\n}\n}\n<\/pre>\n<ul>\n<li>Application initializes a <code>logger<\/code> based on the class name.<\/li>\n<li>A simple counter runs from 1 to 10 and is printed by the <code>logger<\/code><code><\/code>.<\/li>\n<\/ul>\n<p>After creating these files in appropriate locations as specified above, we can verify the successful build of our application with the following command <code>gradle hudsonJar<\/code>. This generates the fat jar in the location <code>build\/libs\/<\/code>.<\/p>\n<p>Once the jar has been built, verify the results by running the application in the command line. <code>java -jar build\/libs\/hudson-1.0.jar<\/code>. In the next section, we will cover the automation of the following process with Hudson CI.<\/p>\n<h3>2.2. Job Configuration<\/h3>\n<p>In Hudson Dashboard, click on New Job to create a new Hudson Job. The Job name is mandatory and an optional description can be provided for better clarity. There are three important sections with respect to our project which we will cover below.<\/p>\n<p>The first section is Source Code Management. Click on Git Repositories to input the reference to your local git repository. An example is provided in the screenshot below. The next configuration is Build Triggers. This is used to specify the automatic trigger for our job.<\/p>\n<p><figure id=\"attachment_62027\" aria-describedby=\"caption-attachment-62027\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/SCMJCG.jpg\"><img decoding=\"async\" class=\"wp-image-62027 size-full\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/SCMJCG.jpg\" alt=\"Gradle Hudson - SCM Section\" width=\"800\" height=\"389\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/SCMJCG.jpg 800w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/SCMJCG-300x146.jpg 300w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/SCMJCG-768x373.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><figcaption id=\"caption-attachment-62027\" class=\"wp-caption-text\">SCM Section<\/figcaption><\/figure><\/p>\n<p>Our job is configured to use SCM polling. The schedule * * * * * indicates the job to poll the git repository for every minute. If changes are found, the job gets triggered automatically. The pattern is minute, hour, Day of Month, Month and Day of Week.<\/p>\n<p>Next section is the Build section. Click on Add Build Step and Select Invoke Gradle Script to create Gradle Subsection. Default installation created previously needs to be selected for the dropdown in Invoke Gradle Version. This ensures the local gradle installation configured earlier is used for running the build.<\/p>\n<p>We will add another build step(Windows Batch Command) to execute our application. This is much similar to a deployment or post-build step. In this step, We will run the created jar using the java command. The command and the build configuration is captured in the screenshot below.<\/p>\n<p><figure id=\"attachment_62028\" aria-describedby=\"caption-attachment-62028\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/BuildJCG.jpg\"><img decoding=\"async\" class=\"wp-image-62028 size-full\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/BuildJCG.jpg\" alt=\"Gradle Hudson - Build Section\" width=\"800\" height=\"456\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/BuildJCG.jpg 800w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/BuildJCG-300x171.jpg 300w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/BuildJCG-768x438.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><figcaption id=\"caption-attachment-62028\" class=\"wp-caption-text\">Build Section<\/figcaption><\/figure><\/p>\n<p>Click on save to save the newly created job. Now, navigate to the git folder and commit the files detailed in the above sections. Once they are committed within a minute, Hudson job gets started automatically. The job results can be seen by clicking the Latest Console Output.<\/p>\n<p>In this post, we saw automation of Gradle builds using Hudson CI server with the help of the Gradle plugin.<\/p>\n<h2>3. Download the Source Code<\/h2>\n<div class=\"download\"><strong>Download<\/strong><br \/>\nYou can download the full source code of this example here: <a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/project.zip\"><strong>GradleHudsonExample<\/strong><\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>This post is about integrating Gradle, a programmable build system into Hudson, a Continuous Integration server. We will also take a look at the configuration required to run a simple application. 1. Introduction 1.1. Hudson The term &#8216;Continuous Integration&#8217; originated with the Extreme Programming development process, as one of its original twelve practices. Each developer &hellip;<\/p>\n","protected":false},"author":148,"featured_media":20342,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[908],"tags":[906,1739],"class_list":["post-61689","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gradle","tag-gradle","tag-hudson"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Gradle Hudson Example - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Interested to learn more about Gradle? Then check out our detailed example on Gradle Hudson! Download our FREE Gradle Build Automation Handbook!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gradle Hudson Example - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Interested to learn more about Gradle? Then check out our detailed example on Gradle Hudson! Download our FREE Gradle Build Automation Handbook!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/\" \/>\n<meta property=\"og:site_name\" content=\"Examples Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-26T09:00:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-03T10:59:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/02\/gradle-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rajagopal ParthaSarathi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@PS_Rajagopal\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rajagopal ParthaSarathi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/\"},\"author\":{\"name\":\"Rajagopal ParthaSarathi\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/c3c29bebb942f4a63a6a2d4c38411b85\"},\"headline\":\"Gradle Hudson Example\",\"datePublished\":\"2018-11-26T09:00:38+00:00\",\"dateModified\":\"2019-04-03T10:59:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/\"},\"wordCount\":1281,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/02\/gradle-logo.jpg\",\"keywords\":[\"gradle\",\"Hudson\"],\"articleSection\":[\"Gradle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/\",\"name\":\"Gradle Hudson Example - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/02\/gradle-logo.jpg\",\"datePublished\":\"2018-11-26T09:00:38+00:00\",\"dateModified\":\"2019-04-03T10:59:09+00:00\",\"description\":\"Interested to learn more about Gradle? Then check out our detailed example on Gradle Hudson! Download our FREE Gradle Build Automation Handbook!\",\"breadcrumb\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#primaryimage\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/02\/gradle-logo.jpg\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/02\/gradle-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/examples.javacodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Development\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Core Java\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/core-java\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Gradle\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/core-java\/gradle\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Gradle Hudson Example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#website\",\"url\":\"https:\/\/examples.javacodegeeks.com\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Examples and Code Snippets\",\"publisher\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/examples.javacodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/examples.javacodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/javacodegeeks\",\"https:\/\/x.com\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/c3c29bebb942f4a63a6a2d4c38411b85\",\"name\":\"Rajagopal ParthaSarathi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cfb94a81445054c9121aae84e08c1e89caaae406739df92517996b0e41492b48?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cfb94a81445054c9121aae84e08c1e89caaae406739df92517996b0e41492b48?s=96&d=mm&r=g\",\"caption\":\"Rajagopal ParthaSarathi\"},\"description\":\"Rajagopal works in software industry solving enterprise-scale problems for customers across geographies specializing in distributed platforms. He holds a masters in computer science with focus on cloud computing from Illinois Institute of Technology. His current interests include data science and distributed computing.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/rajagopalparthasarathi\/\",\"https:\/\/x.com\/PS_Rajagopal\"],\"url\":\"https:\/\/examples.javacodegeeks.com\/author\/rajagopal-parthasarathi\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Gradle Hudson Example - Java Code Geeks","description":"Interested to learn more about Gradle? Then check out our detailed example on Gradle Hudson! Download our FREE Gradle Build Automation Handbook!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/","og_locale":"en_US","og_type":"article","og_title":"Gradle Hudson Example - Java Code Geeks","og_description":"Interested to learn more about Gradle? Then check out our detailed example on Gradle Hudson! Download our FREE Gradle Build Automation Handbook!","og_url":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/","og_site_name":"Examples Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2018-11-26T09:00:38+00:00","article_modified_time":"2019-04-03T10:59:09+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/02\/gradle-logo.jpg","type":"image\/jpeg"}],"author":"Rajagopal ParthaSarathi","twitter_card":"summary_large_image","twitter_creator":"@PS_Rajagopal","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Rajagopal ParthaSarathi","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#article","isPartOf":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/"},"author":{"name":"Rajagopal ParthaSarathi","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/c3c29bebb942f4a63a6a2d4c38411b85"},"headline":"Gradle Hudson Example","datePublished":"2018-11-26T09:00:38+00:00","dateModified":"2019-04-03T10:59:09+00:00","mainEntityOfPage":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/"},"wordCount":1281,"commentCount":0,"publisher":{"@id":"https:\/\/examples.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#primaryimage"},"thumbnailUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/02\/gradle-logo.jpg","keywords":["gradle","Hudson"],"articleSection":["Gradle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/","url":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/","name":"Gradle Hudson Example - Java Code Geeks","isPartOf":{"@id":"https:\/\/examples.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#primaryimage"},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#primaryimage"},"thumbnailUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/02\/gradle-logo.jpg","datePublished":"2018-11-26T09:00:38+00:00","dateModified":"2019-04-03T10:59:09+00:00","description":"Interested to learn more about Gradle? Then check out our detailed example on Gradle Hudson! Download our FREE Gradle Build Automation Handbook!","breadcrumb":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#primaryimage","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/02\/gradle-logo.jpg","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2015\/02\/gradle-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/core-java\/gradle\/gradle-hudson-example\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/examples.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java Development","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/"},{"@type":"ListItem","position":3,"name":"Core Java","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/core-java\/"},{"@type":"ListItem","position":4,"name":"Gradle","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/core-java\/gradle\/"},{"@type":"ListItem","position":5,"name":"Gradle Hudson Example"}]},{"@type":"WebSite","@id":"https:\/\/examples.javacodegeeks.com\/#website","url":"https:\/\/examples.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Examples and Code Snippets","publisher":{"@id":"https:\/\/examples.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/examples.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/examples.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/examples.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/c3c29bebb942f4a63a6a2d4c38411b85","name":"Rajagopal ParthaSarathi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cfb94a81445054c9121aae84e08c1e89caaae406739df92517996b0e41492b48?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cfb94a81445054c9121aae84e08c1e89caaae406739df92517996b0e41492b48?s=96&d=mm&r=g","caption":"Rajagopal ParthaSarathi"},"description":"Rajagopal works in software industry solving enterprise-scale problems for customers across geographies specializing in distributed platforms. He holds a masters in computer science with focus on cloud computing from Illinois Institute of Technology. His current interests include data science and distributed computing.","sameAs":["https:\/\/www.linkedin.com\/in\/rajagopalparthasarathi\/","https:\/\/x.com\/PS_Rajagopal"],"url":"https:\/\/examples.javacodegeeks.com\/author\/rajagopal-parthasarathi\/"}]}},"_links":{"self":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/61689","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/users\/148"}],"replies":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=61689"}],"version-history":[{"count":0,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/61689\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/media\/20342"}],"wp:attachment":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=61689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=61689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=61689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}