{"id":1959,"date":"2017-12-07T06:11:20","date_gmt":"2017-12-07T06:11:20","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/?p=1959"},"modified":"2020-01-09T09:43:05","modified_gmt":"2020-01-09T09:43:05","slug":"how-to-set-latest-p4-cl-into-property","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/how-to-set-latest-p4-cl-into-property\/","title":{"rendered":"How to set latest P4 CL# into property?"},"content":{"rendered":"<p><strong>tpatil created the topic: How to set latest P4 CL# into property?<\/strong><br \/>\nWe have CI setup using bamboo, P4 &#038; maven. When I trigger the build from bamboo it gives me the CL# on which the build is done on build results page.<\/p>\n<p>How can I get this value\/property in pom.xml? I want to add to this CL# to MANIFEST.MF file.<\/p>\n<p>Thanks,<br \/>\n-Tushar<\/p>\n<p><strong>How to set latest P4 CL# into property?<\/strong><br \/>\nThis may serve your ur purpose&#8230;<br \/>\np4 changes -s submitted -m1<\/p>\n<p>plz refer following articles as well<\/p>\n<p><a href=\"http:\/\/stackoverflow.com\/questions\/47007\/determ...ynced-to-in-perforce\" target=\"_blank\" rel=\"noopener\">stackoverflow.com\/questions\/47007\/determ&#8230;ynced-to-in-perforce<\/a><br \/>\nRegards,<br \/>\nRajesh Kumar<br \/>\nTwitt me @ <a href=\"http:\/\/twitter.com\/RajeshKumarIn\" target=\"_blank\" rel=\"noopener\">twitter.com\/RajeshKumarIn<\/a><\/p>\n<p><strong>tpatil replied the topic: Re:How to set latest P4 CL# into property?<\/strong><br \/>\n<code>\/**<br \/>\n*Usage in pon.xml<br \/>\n*\t<plugin>\n*\t<groupId>test.maven<\/groupId><br \/>\n*\t<artifactId>maven-p4-plugin<\/artifactId><br \/>\n*\t<executions><br \/>\n*\t<execution><br \/>\n*\t<goals><br \/>\n*\t<goal>p4changes<\/goal><br \/>\n*\t<\/goals><br \/>\n*\t<configuration><br \/>\n*\t<url>\/\/depot\/ABC\/2\/X\/...<\/url><br \/>\n*\t<\/configuration><br \/>\n*\t<\/execution><br \/>\n*\t<\/executions><br \/>\n*\t<\/plugin>\n*<br \/>\n* Goal which touches a timestamp file.<br \/>\n*<br \/>\n* @goal p4changes<br \/>\n*<br \/>\n* @phase process-sources<br \/>\n*\/<br \/>\npublic class P4RevisionMojo extends AbstractMojo {<\/p>\n<p>private Process p;<br \/>\nprivate Properties prop;<br \/>\nprivate MavenProject project;<br \/>\n\/**<br \/>\n* @parameter expression=\"${p4.url}\" default-value=\".\/...\"<br \/>\n* @required<br \/>\n* @since 1.0<br \/>\n*\/<br \/>\nprivate String suffix;<br \/>\n\/**<br \/>\n* @parameter expression=\"${p4.port}\" default-value=\"${env.P4PORT}\"<br \/>\n* @optional<br \/>\n* @since 1.0<br \/>\n*\/<br \/>\nprivate String p4port;<br \/>\n\/**<br \/>\n* @parameter expression=\"${p4.client}\" default-value=\"${env.P4CLIENT}\"<br \/>\n* @optional<br \/>\n* @since 1.0<br \/>\n*\/<br \/>\nprivate String p4client;<br \/>\n\/**<br \/>\n* @parameter expression=\"${p4.user}\" default-value=\"${env.P4USER}\"<br \/>\n* @optional<br \/>\n* @since 1.0<br \/>\n*\/<br \/>\nprivate String p4user;<br \/>\n\/**<br \/>\n* @parameter expression=\"${p4.passwd}\" default-value=\"${env.P4PASSWD}\"<br \/>\n* @optional<br \/>\n* @since 1.0<br \/>\n*\/<br \/>\nprivate String p4passwd;<\/p>\n<p>public void execute() throws MojoExecutionException {<br \/>\ntry {<br \/>\nString cmd = \"p4 changes -m 1 \" + url;<br \/>\nthis.getLog().info(\"Executing P4 command: \" + cmd);<br \/>\np = Runtime.getRuntime().exec(cmd);<br \/>\nBufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));<br \/>\nString line = stdInput.readLine();<\/p>\n<p>String property = \"p4.revision\";<br \/>\nif (suffix != null && suffix.length() > 0) {<br \/>\nproperty = property.concat(\".\" + suffix);<br \/>\n}<\/p>\n<p>prop.setProperty(\"buildtstamp\", new Date().toString());<br \/>\nprop.setProperty(property, \"000000\");<br \/>\nwhile (line != null) {<br \/>\nString[] line_items = line.split(\" \");<br \/>\nif (line_items.length >= 1) {<br \/>\nif (line_items[0].equalsIgnoreCase(\"Change\")) {<br \/>\nprop.setProperty(property, line_items[1]);<br \/>\nthis.getLog().info(\"P4 Revision ${\" + property + \"} :::: \" + prop.getProperty(property));<br \/>\n}<\/p>\n<p>}<br \/>\nreturn;<br \/>\n}<\/p>\n<p>} catch (IOException e) {<br \/>\n\/\/ TODO Auto-generated catch block<br \/>\ne.printStackTrace();<br \/>\n}<br \/>\n}<br \/>\n}<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>tpatil created the topic: How to set latest P4 CL# into property? We have CI setup using bamboo, P4 &#038; maven. When I trigger the build from bamboo it gives&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[29],"tags":[384],"class_list":["post-1959","post","type-post","status-publish","format-standard","hentry","category-maven","tag-p4"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/1959","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=1959"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/1959\/revisions"}],"predecessor-version":[{"id":1960,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/1959\/revisions\/1960"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=1959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=1959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=1959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}