{"id":58536,"date":"2016-07-19T22:00:28","date_gmt":"2016-07-19T19:00:28","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=58536"},"modified":"2016-07-19T17:53:55","modified_gmt":"2016-07-19T14:53:55","slug":"introducing-yet-another-cloud-foundry-gradle-plugin","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html","title":{"rendered":"Introducing &#8220;Yet another&#8221; Cloud foundry Gradle plugin"},"content":{"rendered":"<p>In the process of working on an automated Jenkins pipeline for deploying a\u00a0<a href=\"https:\/\/www.blogger.com\/www.cloudfoundry.com\">Cloud Foundry<\/a> application with two of my colleagues(Thanks\u00a0<a href=\"https:\/\/github.com\/malston\">Mark Alston<\/a>,\u00a0<a href=\"https:\/\/github.com\/dave-malone\">Dave Malone<\/a> !) I decided to try my hand on writing a Gradle plugin to perform some of the tasks that are typically done using a\u00a0<a href=\"https:\/\/github.com\/cloudfoundry\/cli\">command line Cloud Foundry Client<\/a>.<\/p>\n<p>Introducing the totally unimaginatively named\u00a0<a href=\"https:\/\/github.com\/pivotalservices\/ya-cf-app-gradle-plugin\">&#8220;ya-cf-app-gradle-plugin&#8221;<\/a> with a set of gradle tasks(dare I say opinionated!) that should help automate some of the routine steps involved in deploying a java application to a Cloud Foundry environment. The &#8220;ya&#8221; or the yet-another part is because this is just a stand-in plugin, the authoritative plugin for Cloud Foundry will ultimately reside with the excellent\u00a0<a href=\"https:\/\/github.com\/cloudfoundry\/cf-java-client\">CF-Java-Client<\/a> project.<\/p>\n<p>I have provided an extensive\u00a0<a href=\"https:\/\/github.com\/pivotalservices\/ya-cf-app-gradle-plugin\/blob\/master\/README.adoc\">README<\/a> with the projects documentation that should help in getting started with using the plugin, the tasks should be fairly intuitive if you have previously worked with the CF cli.<\/p>\n<p>Just as an example, once the gradle plugin is cleanly added into the build script, the following gradle tasks are available when listed by running &#8220;.\/gradlew tasks&#8221; command:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2016\/07\/cf-plugin-tasks.png\"><img decoding=\"async\" class=\"aligncenter wp-image-58544 size-large\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2016\/07\/cf-plugin-tasks-1024x493.png\" alt=\"cf-plugin-tasks\" width=\"620\" height=\"298\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2016\/07\/cf-plugin-tasks-1024x493.png 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2016\/07\/cf-plugin-tasks-300x144.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2016\/07\/cf-plugin-tasks-768x370.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2016\/07\/cf-plugin-tasks.png 1088w\" sizes=\"(max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>All the tasks work off a configuration provided the following way in a cfConfig block in the buildscript:<\/p>\n<pre class=\"brush:java\">apply plugin: 'cf-app'\r\n\r\ncfConfig {\r\n \/\/CF Details\r\n ccHost = \"api.local.pcfdev.io\"\r\n ccUser = \"admin\"\r\n ccPassword = \"admin\"\r\n org = \"pcfdev-org\"\r\n space = \"pcfdev-space\"\r\n\r\n \/\/App Details\r\n name = \"cf-show-env\"\r\n hostName = \"cf-show-env\"\r\n filePath = \"build\/libs\/cf-show-env-0.1.2-SNAPSHOT.jar\"\r\n path = \"\"\r\n domain = \"local.pcfdev.io\"\r\n instances = 2\r\n memory = 512\r\n\r\n \/\/Env and services\r\n buildpack = \"https:\/\/github.com\/cloudfoundry\/java-buildpack.git\"\r\n environment = [\"JAVA_OPTS\": \"-Djava.security.egd=file:\/dev\/.\/urandom\", \"SPRING_PROFILES_ACTIVE\": \"cloud\"]\r\n services  = [\"mydb\"]\r\n}<\/pre>\n<p>Any overrides on top of the base configuration provided this way can be done by specifying gradle properties with a &#8220;cf.*&#8221; pattern. For eg. a normal push of an application would look like this:<\/p>\n<pre class=\"brush:java\">.\/gradlew cf-push<\/pre>\n<p>and a push with the name of the application and the host name overridden would look like this:<\/p>\n<pre class=\"brush:java\">.\/gradlew cf-push -Pcf.name=Green -Pcf.hostName=demo-time-temp<\/pre>\n<p>All of the tasks follow the exact same pattern, depending on the cfConfig block as the authoritative source of properties along with the command line overrides. There is one task that can be used for retrieving back some of the details of an app in CloudFoundry, the task is &#8220;cf-get-app-detail&#8221;, say after deploying a canary instance of an app you wanted to run a quick test against it, the task would look along these lines, a structure &#8220;project.cfConfig&#8221; is populated with the app details once successfully invoked:<\/p>\n<pre class=\"brush:java\">task acceptanceTest(type: Test, dependsOn: \"cf-get-app-detail\")  {\r\n doFirst() {\r\n  systemProperty \"url\", \"https:\/\/${project.cfConfig.applicationDetail.urls[0]}\"\r\n }\r\n useJUnit {\r\n  includeCategories 'test.AcceptanceTest'\r\n }\r\n}<\/pre>\n<h2>References:<\/h2>\n<p>1. The plugin is built on top of the excellent\u00a0<a href=\"https:\/\/github.com\/cloudfoundry\/cf-java-client\">CF-Java-Client<\/a> project<\/p>\n<p>2. I have borrowed a lot of ideas from\u00a0<a href=\"https:\/\/github.com\/melix\/gradle-cf-plugin\">gradle-cf-plugin<\/a> but is more or less a clean room implementation<\/p>\n<p>3. Here is a\u00a0<a href=\"https:\/\/github.com\/bijukunjummen\/cf-show-env\">sample project<\/a> which makes use of the plugin.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/www.java-allandsundry.com\/2016\/07\/introducing-yet-another-cloud-foundry.html\">Introducing &#8220;Yet another&#8221; Cloud foundry Gradle plugin<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/join-us\/jcg\/\">JCG partner<\/a> Biju Kunjummen at the <a href=\"http:\/\/www.java-allandsundry.com\/\">all and sundry<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In the process of working on an automated Jenkins pipeline for deploying a\u00a0Cloud Foundry application with two of my colleagues(Thanks\u00a0Mark Alston,\u00a0Dave Malone !) I decided to try my hand on writing a Gradle plugin to perform some of the tasks that are typically done using a\u00a0command line Cloud Foundry Client. Introducing the totally unimaginatively named\u00a0&#8220;ya-cf-app-gradle-plugin&#8221; &hellip;<\/p>\n","protected":false},"author":236,"featured_media":129,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[556,484],"class_list":["post-58536","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-core-java","tag-cloud-foundry","tag-gradle"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Introducing &quot;Yet another&quot; Cloud foundry Gradle plugin - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"In the process of working on an automated Jenkins pipeline for deploying a\u00a0Cloud Foundry application with two of my colleagues(Thanks\u00a0Mark Alston,\u00a0Dave\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing &quot;Yet another&quot; Cloud foundry Gradle plugin - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"In the process of working on an automated Jenkins pipeline for deploying a\u00a0Cloud Foundry application with two of my colleagues(Thanks\u00a0Mark Alston,\u00a0Dave\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2016-07-19T19:00:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/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=\"Biju Kunjummen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Biju Kunjummen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html\"},\"author\":{\"name\":\"Biju Kunjummen\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/802eedfe6f17c3c13fa656af46b6b0e5\"},\"headline\":\"Introducing &#8220;Yet another&#8221; Cloud foundry Gradle plugin\",\"datePublished\":\"2016-07-19T19:00:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html\"},\"wordCount\":407,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/gradle-logo.jpg\",\"keywords\":[\"Cloud Foundry\",\"Gradle\"],\"articleSection\":[\"Core Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html\",\"name\":\"Introducing \\\"Yet another\\\" Cloud foundry Gradle plugin - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/gradle-logo.jpg\",\"datePublished\":\"2016-07-19T19:00:28+00:00\",\"description\":\"In the process of working on an automated Jenkins pipeline for deploying a\u00a0Cloud Foundry application with two of my colleagues(Thanks\u00a0Mark Alston,\u00a0Dave\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/gradle-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/gradle-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/07\\\/introducing-yet-another-cloud-foundry-gradle-plugin.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Core Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/core-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Introducing &#8220;Yet another&#8221; Cloud foundry Gradle plugin\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/802eedfe6f17c3c13fa656af46b6b0e5\",\"name\":\"Biju Kunjummen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g\",\"caption\":\"Biju Kunjummen\"},\"sameAs\":[\"http:\\\/\\\/biju-allandsundry.blogspot.com\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Biju-Kunjummen\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introducing \"Yet another\" Cloud foundry Gradle plugin - Java Code Geeks","description":"In the process of working on an automated Jenkins pipeline for deploying a\u00a0Cloud Foundry application with two of my colleagues(Thanks\u00a0Mark Alston,\u00a0Dave","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:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html","og_locale":"en_US","og_type":"article","og_title":"Introducing \"Yet another\" Cloud foundry Gradle plugin - Java Code Geeks","og_description":"In the process of working on an automated Jenkins pipeline for deploying a\u00a0Cloud Foundry application with two of my colleagues(Thanks\u00a0Mark Alston,\u00a0Dave","og_url":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2016-07-19T19:00:28+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/gradle-logo.jpg","type":"image\/jpeg"}],"author":"Biju Kunjummen","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Biju Kunjummen","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html"},"author":{"name":"Biju Kunjummen","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/802eedfe6f17c3c13fa656af46b6b0e5"},"headline":"Introducing &#8220;Yet another&#8221; Cloud foundry Gradle plugin","datePublished":"2016-07-19T19:00:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html"},"wordCount":407,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/gradle-logo.jpg","keywords":["Cloud Foundry","Gradle"],"articleSection":["Core Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html","url":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html","name":"Introducing \"Yet another\" Cloud foundry Gradle plugin - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/gradle-logo.jpg","datePublished":"2016-07-19T19:00:28+00:00","description":"In the process of working on an automated Jenkins pipeline for deploying a\u00a0Cloud Foundry application with two of my colleagues(Thanks\u00a0Mark Alston,\u00a0Dave","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/gradle-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/gradle-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2016\/07\/introducing-yet-another-cloud-foundry-gradle-plugin.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Core Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/core-java"},{"@type":"ListItem","position":4,"name":"Introducing &#8220;Yet another&#8221; Cloud foundry Gradle plugin"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/802eedfe6f17c3c13fa656af46b6b0e5","name":"Biju Kunjummen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g","caption":"Biju Kunjummen"},"sameAs":["http:\/\/biju-allandsundry.blogspot.com"],"url":"https:\/\/www.javacodegeeks.com\/author\/Biju-Kunjummen"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/58536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/236"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=58536"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/58536\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/129"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=58536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=58536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=58536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}