dependencies tabs
diff --git a/geronimo-microprofile-site/src/main/jbake/assets/js/geronimo.js b/geronimo-microprofile-site/src/main/jbake/assets/js/geronimo.js
new file mode 100644
index 0000000..6a90d74
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/assets/js/geronimo.js
@@ -0,0 +1,82 @@
+$(function() {
+  // ensure dependencies blocks are multi-dependencies friendly
+  function isSimpleTag(content, tagName) {
+    var endTag = '</' + tagName + '>';
+    return content.indexOf('<' + tagName + '>') === 0 && content.indexOf(endTag) === content.length - endTag.length;
+  }
+  function toADocCode(content, highlighting) {
+    return '<div class="listingblock dependency-sample-code"><div class="content"><pre class="prettyprint">' +
+      '<code class="language-' + highlighting + ' hljs" data-lang="' + highlighting + '">' + content + '</code></pre></div></div>';
+  }
+  function extractFromXml(content, tagName) {
+    var startTag = '<' + tagName + '>';
+    var start = content.indexOf(startTag);
+    var end = content.indexOf('</' + tagName + '>', start + 1);
+    if (start < 0 || end <= start) {
+      return false;
+    }
+    return content.substring(start + startTag.length, end);
+  }
+  function parseGav(dep) {
+    var artifactId = extractFromXml(dep, 'artifactId');
+    var groupId = extractFromXml(dep, 'groupId');
+    var version = extractFromXml(dep, 'version');
+    var scope = extractFromXml(dep, 'scope');
+    return {
+      success: artifactId && groupId && version,
+      groupId: groupId,
+      artifactId: artifactId,
+      version: version,
+      scope: scope || 'compile'
+    };
+  }
+  var codeCounter = 0;
+  $('code.language-xml').each(function () {
+    var code = $(this);
+    var content = code.text().trim();
+    if (isSimpleTag(content, 'dependency')) {
+      var highlightjsParent = code.parent();
+      if (!highlightjsParent || !highlightjsParent.hasClass('prettyprint')) {
+        return;
+      }
+      var contentParent = highlightjsParent.parent();
+      if (!contentParent || !contentParent.hasClass('content')) {
+        return;
+      }
+      var listingblockParent = contentParent.parent();
+      if (!listingblockParent || !listingblockParent.hasClass('listingblock')) {
+        return;
+      }
+      var gav = parseGav(content);
+      if (!gav.success) {
+        return;
+      }
+      listingblockParent.html('<ul class="nav nav-tabs">'+
+        '<li class="show active"><a data-toggle="tab" href="#__generated_code_tab_maven_' + codeCounter + '">Maven</a></li>' +
+        '<li><a data-toggle="tab" href="#__generated_code_tab_gradle_' + codeCounter + '">Gradle</a></li>' +
+        '<li><a data-toggle="tab" href="#__generated_code_tab_sbt_' + codeCounter + '">SBT</a></li>' +
+        '<li><a data-toggle="tab" href="#__generated_code_tab_ivy_' + codeCounter + '">Ivy</a></li>' +
+        '<li><a data-toggle="tab" href="#__generated_code_tab_grapes_' + codeCounter + '">Grapes</a></li>' +
+      '</ul>' +
+      '<div class="tab-content dependency-sample">' +
+        '<div id="__generated_code_tab_maven_' + codeCounter + '" class="tab-pane fade in show active">' +
+          toADocCode($('<div/>').text(content).html(), 'xml') +
+        '</div>' +
+        '<div id="__generated_code_tab_gradle_' + codeCounter + '" class="tab-pane fade">' +
+          toADocCode(gav.scope + ' ' + '"' + gav.groupId + ':' + gav.artifactId + ':' + gav.version + '"', 'java') +
+        '</div>' +
+        '<div id="__generated_code_tab_sbt_' + codeCounter + '" class="tab-pane fade">' +
+          toADocCode('libraryDependencies += "' + gav.groupId + '" % "' + gav.artifactId + '" % "' + gav.version + '" % ' + gav.scope, 'text') +
+        '</div>' +
+        '<div id="__generated_code_tab_ivy_' + codeCounter + '" class="tab-pane fade">' +
+          toADocCode($('<div/>').text('<dependency org="' + gav.groupId + '" name="' + gav.artifactId + '" rev="' + gav.version + '" />').html(), 'xml') +
+        '</div>' +
+        '<div id="__generated_code_tab_grapes_' + codeCounter + '" class="tab-pane fade">' +
+          toADocCode('@Grapes(\n    @Grab(group=\'' + gav.groupId + '\', module=\'' + gav.artifactId + '\', version=\'' + gav.version + '\')\n)', 'java') +
+        '</div>' +
+      '</div>');
+      codeCounter++;
+    }
+  });
+  prettyPrint();
+});
diff --git a/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl b/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl
index 9464183..2c8a740 100644
--- a/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl
+++ b/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl
@@ -11,5 +11,6 @@
     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
     <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js" integrity="sha384-o+RDsa0aLu++PJvFqy8fFScvbHFLtbvScb8AjopnFD+iEQ7wo/CG0xlczd+2O/em" crossorigin="anonymous"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js" integrity="sha256-SHXnnZAbgSEf+OBhDLR7I2mx9vNZAIzPeCGhxRV+VQw=" crossorigin="anonymous"></script>
+    <script src="<#if (content.rootpath)??>${content.rootpath}</#if>js/geronimo.js"></script>
   </body>
 </html>
diff --git a/geronimo-microprofile-site/src/main/jbake/templates/header.ftl b/geronimo-microprofile-site/src/main/jbake/templates/header.ftl
index 7fb9c09..df95e42 100644
--- a/geronimo-microprofile-site/src/main/jbake/templates/header.ftl
+++ b/geronimo-microprofile-site/src/main/jbake/templates/header.ftl
@@ -17,5 +17,5 @@
       <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" integrity="sha256-3Jy/GbSLrg0o9y5Z5n1uw0qxZECH7C6OQpVBgNFYa0g=" crossorigin="anonymous"></script>
     <![endif]-->
   </head>
-  <body onload="prettyPrint()">
+  <body>
     <div id="wrap">