|
|
|
|
|
|
|
|
|
|
|
|
| |
| <!-- jQuery Eclipse IP approval https://dev.eclipse.org/ipzilla/show_bug.cgi?id=10801 --> |
| <script type="text/javascript" charset="utf8" src="../../../docs/assets/scripts/jquery-1.8.1.min.js"></script> |
| |
| <script type="text/javascript" charset="utf8"> |
| $(document).ready(function(){ |
| var images = document.getElementsByTagName('img'); |
| for (var i = 0; i < images.length; i++) { |
| var image = images[i]; |
| var parentElement = image.parentElement; |
| var a = document.createElement('a'); |
| if (! image.getAttribute('src').includes("logo-codenvy.svg") && ! image.getAttribute('src').includes("codenvy-contribute.svg") ){ |
| a.href = image.getAttribute('src'); |
| a.target = "_blank"; |
| a.appendChild(image); |
| parentElement.appendChild(a); |
| } |
| } |
| }); |
| </script> |
| <!DOCTYPE HTML> |
| <html lang="en-US"> |
| <head> |
| <title>Plugin Lifecycle - |
| |
| Docs |
| - Eclipse Che</title> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <meta name="generator" content="Jekyll v3.5.1"> |
| <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic,900"> |
| <link rel="stylesheet" href="../../../docs/assets/css/screen.css"> |
| <link rel="icon" type="image/x-icon" href="../../../docs/assets/imgs/favicon.ico"> |
| <!--[if lt IE 9]> |
| <script src="/js/html5shiv.min.js"></script> |
| <script src="/js/respond.min.js"></script> |
| <![endif]--> |
| </head> |
| |
| |
| <body class="wrap"> |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| |
| <header> |
| <nav class="mobile-nav show-on-mobiles"> |
| <ul> |
| |
| <li class="current"> |
| <a href="../../../docs/index.html">Docs</a> |
| </li> |
| <li class=""> |
| <a href="../../../docs/tutorials/multi-machine/index.html">Tutorials</a> |
| </li> |
| <li class=""> |
| <a href="../../../docs/openshift/config/index.html">OpenShift</a> |
| </li> |
| <li> |
| <a href="https://github.com/eclipse/che-docs/tree/master/src/main">GitHub</a> |
| </li> |
| </ul> |
| |
| </nav> |
| <div class="grid"> |
| <div class="unit one-third center-on-mobiles"> |
| <a href="https://eclipse.org/che/"> |
| <span class="sr-only">Eclipse Che</span> |
| <img src="../../../docs/assets/imgs/logo-eclipseche.svg" alt="Eclipse Che Logo" width="249" height="115"> |
| </a> |
| </div> |
| <nav class="main-nav unit two-thirds hide-on-mobiles"> |
| <ul> |
| |
| <li class="current"> |
| <a href="../../../docs/index.html">Docs</a> |
| </li> |
| <li class=""> |
| <a href="../../../docs/tutorials/multi-machine/index.html">Tutorials</a> |
| </li> |
| <li class=""> |
| <a href="../../../docs/openshift/config/index.html">OpenShift</a> |
| </li> |
| <li> |
| <a href="https://github.com/eclipse/che-docs/tree/master/src/main">GitHub</a> |
| </li> |
| </ul> |
| |
| </nav> |
| </div> |
| </header> |
| |
| |
| <section class="docs"> |
| <div class="grid"> |
| |
| <div class="docs-nav-mobile unit whole show-on-mobiles"> |
| <select onchange="if (this.value) window.location.href=this.value"> |
| <option value="">Navigate the docs…</option> |
| |
| |
| <optgroup label="SETUP"> |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/index.html">Introduction</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/setup/getting-started/index.html">Getting Started: Local</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/setup/getting-started-saas-cloud/index.html">Getting Started: SaaS Cloud</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/setup/configuration/index.html">Configuration</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/setup/managing/index.html">Managing</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/setup/cli/index.html">CLI Reference</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/setup/glossary/index.html">Glossary</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/setup/docker/index.html">Docker Installation</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/setup/openshift/index.html">OpenShift Installation</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/setup/selenium/index.html">How to run selenium tests</option> |
| |
| |
| </ul> |
| |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/index.html">Introduction</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/getting-started/index.html">Getting Started: Local</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/getting-started-saas-cloud/index.html">Getting Started: SaaS Cloud</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/configuration/index.html">Configuration</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/managing/index.html">Managing</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/cli/index.html">CLI Reference</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/glossary/index.html">Glossary</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/docker/index.html">Docker Installation</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/openshift/index.html">OpenShift Installation</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/selenium/index.html">How to run selenium tests</a></li> |
| |
| |
| |
| </ul> |
| |
| |
| </optgroup> |
| |
| |
| |
| <optgroup label="WORKSPACE ADMINISTRATION"> |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/devops/intro/index.html">Introduction</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/devops/runtime-stacks/index.html">Runtime Stacks</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/devops/runtime-recipes/index.html">Runtime Recipes</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/devops/project-samples/index.html">Project Samples</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/devops/runtime-machines/index.html">Runtime Machines</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/devops/volume-mounts/index.html">Volume Mounts</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/devops/ws-agents/index.html">Workspace Agents</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/devops/workspaces-data-model/index.html">Workspace Data Model</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/devops/runtime-stacks-data-model/index.html">Runtime Stacks Data Model</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/devops/project-samples-data-model/index.html">Project Samples Data Model</option> |
| |
| |
| </ul> |
| |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/intro/index.html">Introduction</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/runtime-stacks/index.html">Runtime Stacks</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/runtime-recipes/index.html">Runtime Recipes</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/project-samples/index.html">Project Samples</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/runtime-machines/index.html">Runtime Machines</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/volume-mounts/index.html">Volume Mounts</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/ws-agents/index.html">Workspace Agents</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/workspaces-data-model/index.html">Workspace Data Model</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/runtime-stacks-data-model/index.html">Runtime Stacks Data Model</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/project-samples-data-model/index.html">Project Samples Data Model</a></li> |
| |
| |
| |
| </ul> |
| |
| |
| </optgroup> |
| |
| |
| |
| <optgroup label="USER GUIDE"> |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/projects/index.html">Projects</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/import-a-project/index.html">Import</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/ssh/index.html">SSH</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/sync/index.html">Local IDE Sync</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/editor-settings/index.html">Editor</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/intellisense/index.html">Intellisense</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/commands/index.html">Commands</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/git-svn/index.html">Git and SVN</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/previews/index.html">Previews</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/build/index.html">Build</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/run/index.html">Run</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/sharing/index.html">Share</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/debug/index.html">Debug</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/docker/index.html">Docker</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/ide/electron/index.html">Install Che Desktop Client</option> |
| |
| |
| </ul> |
| |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/projects/index.html">Projects</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/import-a-project/index.html">Import</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/ssh/index.html">SSH</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/sync/index.html">Local IDE Sync</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/editor-settings/index.html">Editor</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/intellisense/index.html">Intellisense</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/commands/index.html">Commands</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/git-svn/index.html">Git and SVN</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/previews/index.html">Previews</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/build/index.html">Build</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/run/index.html">Run</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/sharing/index.html">Share</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/debug/index.html">Debug</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/docker/index.html">Docker</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/electron/index.html">Install Che Desktop Client</a></li> |
| |
| |
| |
| </ul> |
| |
| |
| </optgroup> |
| |
| |
| |
| <optgroup label="PORTABLE WORKSPACES"> |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/chedir/getting-started/index.html">Chedir - Getting Started</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/chedir/why/index.html">Chedir - Why Chedir?</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/chedir/installation/index.html">Chedir - Installation</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/chedir/project-setup/index.html">Chedir - Project Setup</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/chedir/up-and-down/index.html">Chedir - Up and Down</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/chedir/chefiles/index.html">Chedir - Chefile</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/chedir/ssh/index.html">Chedir - SSH</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/chedir/factories/index.html">Chedir - Factories</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="">Error Generating Page Link. Contact Maintainer./docs/factory-getting-started/</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="">Error Generating Page Link. Contact Maintainer./docs/factory-creating/</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="">Error Generating Page Link. Contact Maintainer./docs/factory-json-reference/</option> |
| |
| |
| </ul> |
| |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/getting-started/index.html">Chedir - Getting Started</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/why/index.html">Chedir - Why Chedir?</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/installation/index.html">Chedir - Installation</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/project-setup/index.html">Chedir - Project Setup</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/up-and-down/index.html">Chedir - Up and Down</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/chefiles/index.html">Chedir - Chefile</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/ssh/index.html">Chedir - SSH</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/factories/index.html">Chedir - Factories</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/factory/getting-started/index.html">Factory - Getting Started</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/factory/creating/index.html">Factory - Creating</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/factory/json-reference/index.html">Factory - JSON Reference</a></li> |
| |
| |
| |
| </ul> |
| |
| |
| </optgroup> |
| |
| |
| |
| <optgroup label="DEVELOPER GUIDE - REST API"> |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/intro/index.html">Introduction</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/archetype/index.html">Archetype</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/assembly-lifecycle/index.html">Assembly Dev Lifecycle</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/plugin-lifecycle/index.html">Plugin Lifecycle</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-rest-apis/index.html">SDK REST APIs</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-class-reference/index.html">SDK Class Reference</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-dependency-injection/index.html">SDK Dependency Injection</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-dto/index.html">SDK DTOs</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-properties/index.html">SDK Properties</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-code-editors/index.html">SDK Editors</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-embed-htmljs/index.html">SDK Embedded JavaScript</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-project-types/index.html">SDK Project Types</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-actions/index.html">SDK Actions</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-services/index.html">SDK Services</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-parts/index.html">SDK Parts</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-themes/index.html">SDK Themes</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-custom-agents/index.html">SDK Custom Agents</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-language-server-protocol/index.html">SDK Language Server Protocol</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option value="../../../docs/assemblies/sdk-workspace/index.html">SDK Workspace</option> |
| |
| |
| </ul> |
| |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/intro/index.html">Introduction</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/archetype/index.html">Archetype</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/assembly-lifecycle/index.html">Assembly Dev Lifecycle</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="current"><a href="../../../docs/assemblies/plugin-lifecycle/index.html">Plugin Lifecycle</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-rest-apis/index.html">SDK REST APIs</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-class-reference/index.html">SDK Class Reference</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-dependency-injection/index.html">SDK Dependency Injection</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-dto/index.html">SDK DTOs</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-properties/index.html">SDK Properties</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-code-editors/index.html">SDK Editors</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-embed-htmljs/index.html">SDK Embedded JavaScript</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-project-types/index.html">SDK Project Types</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-actions/index.html">SDK Actions</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-services/index.html">SDK Services</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-parts/index.html">SDK Parts</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-themes/index.html">SDK Themes</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-custom-agents/index.html">SDK Custom Agents</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-language-server-protocol/index.html">SDK Language Server Protocol</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-workspace/index.html">SDK Workspace</a></li> |
| |
| |
| |
| </ul> |
| |
| |
| </optgroup> |
| |
| |
| |
| |
| |
| |
| </select> |
| </div> |
| |
| |
| <div class="unit four-fifths"> |
| <article> |
| <div class="improve right hide-on-mobiles"> |
| <a href="https://github.com/codenvy/che-docs/blob/master/src/main/_docs/assemblies/assemblies-plugin-lifecycle.md"><i class="fa fa-pencil"></i> Improve this page</a> |
| <!--<a href="https://github.com/eclipse/che/blob/master/docs/_docs/assemblies/assemblies-plugin-lifecycle.md"><i class="fa fa-pencil"></i> Improve this page</a>--> |
| </div> |
| <div class="doc-title"> |
| <h1>Plugin Lifecycle</h1> |
| <div class="doc-title-border"> |
| </div> |
| </div> |
| |
| <p>This is an advanced section. You should use archetypes to build custom assemblies that have pre-packaged plugins. Ultimately, if you want to modify the IDE or alter the REST API services in Che or a workspace agent, you need to write a plugin that contains extensions. An extension is code that is compiled and packaged for deployment into Che.</p> |
| |
| <p>This page discusses the details of how plugins are structured and built. If you wanted to author a plugin from scratch, you could use the material in this page to understand how it is composed.</p> |
| |
| <p>In this document, we often interchangeably use <code class="highlighter-rouge">plugin</code> and <code class="highlighter-rouge">extension</code>. An extension is the code that is to be injected into the system. A plugin is the packaging of that extension(s).</p> |
| |
| <h1 id="structure">Structure</h1> |
| <p>The typical structure of a Che plugin is composed of the following:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>File</th> |
| <th>Details</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td><code class="highlighter-rouge">/plugin/pom.xml</code></td> |
| <td>The <code class="highlighter-rouge">pom.xml</code> is a build file that compiles your extension and creates a JAR packaging.</td> |
| </tr> |
| <tr> |
| <td><code class="highlighter-rouge">/plugin/src/</code></td> |
| <td>Your extension source and build files.</td> |
| </tr> |
| <tr> |
| <td><code class="highlighter-rouge">/plugin/target/</code></td> |
| <td>Your JAR is placed in the <code class="highlighter-rouge">/target</code> directory and installed into your local maven repository.</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <p>Depending on the complexity of your plugin, you might create a multi-module structure. Each module is independently buildable, and they each would have their own <code class="highlighter-rouge">pom.xml</code>, <code class="highlighter-rouge">src</code>, and <code class="highlighter-rouge">target</code> entries.</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>File</th> |
| <th>Details</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td><code class="highlighter-rouge">/plugin/extension-ide</code></td> |
| <td>Your extension module for the IDE client.</td> |
| </tr> |
| <tr> |
| <td><code class="highlighter-rouge">/plugin/extension-server</code></td> |
| <td>Your extension module for the server part.</td> |
| </tr> |
| <tr> |
| <td><code class="highlighter-rouge">/plugin/extension-shared</code></td> |
| <td>Your extension module for the shared code between the server and the client.</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <p>Each module has a directory structure that is based upon maven and will include source code and a target where artifacts are placed.</p> |
| |
| <div class="language-shell highlighter-rouge"><pre class="highlight"><code>pom.xml |
| src/main/java/<span class="o">{</span>package-name<span class="o">}</span>/<span class="o">{</span>extensionName<span class="o">}</span>.java |
| </code></pre> |
| </div> |
| |
| <p>Depending on the extension, you may also need to include:</p> |
| |
| <div class="language-text highlighter-rouge"><pre class="highlight"><code># Required for client-side extensions |
| src/main/resources/{package-name}/{extensionName}.gwt.xml |
| |
| # Optional, required if you use GIN injection (in client-side extensions) |
| # GIN injection causes configuration & invocation during IDE activation |
| src/main/java/{package-name}/{extensionName}GinModule.java |
| |
| # Optional, required if you use Guice injection (in server-side extensions) |
| # Guice injection causes configuration & invocation during Che server activation |
| src/main/java/{package-name}/{extensionName}GuiceModule.java |
| |
| # Optional, required if you want to include static JavaScript or CSS files (in client-side extensions) |
| src/main/resources/{full-qualified-extension-name}/your-javascript.js |
| </code></pre> |
| </div> |
| |
| <p>Generally you can give Gin and Guice modules any file name, but for the sake of simplicity we suggest sticking to the naming convention above.</p> |
| |
| <p>See the following <a href="https://github.com/eclipse/che/tree/master/samples/sample-plugin-wizard">example</a> for an advanced sample extension.</p> |
| |
| <h1 id="compiling-extensions">Compiling Extensions</h1> |
| <h6 id="pomxml">pom.xml</h6> |
| <p>Each extension has a root <code class="highlighter-rouge">pom.xml</code> file. When configuring an extension <code class="highlighter-rouge">pom.xml</code> file, you must define an <code class="highlighter-rouge"><artifactId></code> tag which will be the unique name identifier given to this extension. This identifier tag will be referenced by the Che assembly to declare that your extension is part of Che. You can override the <code class="highlighter-rouge">groupId</code> and <code class="highlighter-rouge">version</code> parameters from the parent, or if not specified, it will inherit the values set by the <code class="highlighter-rouge"><parent></code> tag reference.</p> |
| |
| <div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="cp"><?xml version="1.0" encoding="UTF-8"?></span> |
| <span class="nt"><project</span> <span class="na">xmlns=</span><span class="s">"http://maven.apache.org/POM/4.0.0"</span> <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span> <span class="na">xsi:schemaLocation=</span><span class="s">"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"</span><span class="nt">></span> |
| <span class="nt"><modelVersion></span>4.0.0<span class="nt"></modelVersion></span> |
| <span class="nt"><parent></span> |
| <span class="nt"><artifactId></span>che-parent<span class="nt"></artifactId></span> |
| <span class="nt"><groupId></span>org.eclipse.che<span class="nt"></groupId></span> |
| <span class="nt"><version></span>!!! REPLACE_WITH_CHE_VERSION !!!<span class="nt"></version></span> |
| <span class="nt"></parent></span> |
| <span class="nt"><artifactId></span>che-examples-service<span class="nt"></artifactId></span> |
| <span class="nt"><packaging></span>jar<span class="nt"></packaging></span> |
| <span class="nt"><name></span>Che :: Examples :: Service<span class="nt"></name></span> |
| <span class="nt"><dependencies></span> |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>com.google.inject<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>guice<span class="nt"></artifactId></span> |
| <span class="nt"></dependency></span> |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>javax.ws.rs<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>javax.ws.rs-api<span class="nt"></artifactId></span> |
| <span class="nt"></dependency></span> |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.eclipse.che.core<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>che-core-commons-inject<span class="nt"></artifactId></span> |
| <span class="nt"></dependency></span> |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>com.google.gwt<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>gwt-user<span class="nt"></artifactId></span> |
| <span class="nt"><scope></span>provided<span class="nt"></scope></span> |
| <span class="nt"></dependency></span> |
| <span class="nt"></dependencies></span> |
| <span class="nt"><repositories></span> |
| <span class="nt"><repository></span> |
| <span class="nt"><id></span>codenvy-public-repo<span class="nt"></id></span> |
| <span class="nt"><name></span>codenvy public<span class="nt"></name></span> |
| <span class="nt"><url></span>https://maven.codenvycorp.com/content/groups/public/<span class="nt"></url></span> |
| <span class="nt"></repository></span> |
| <span class="nt"><repository></span> |
| <span class="nt"><id></span>codenvy-public-snapshots-repo<span class="nt"></id></span> |
| <span class="nt"><name></span>codenvy public snapshots<span class="nt"></name></span> |
| <span class="nt"><url></span>https://maven.codenvycorp.com/content/repositories/codenvy-public-snapshots/<span class="nt"></url></span> |
| <span class="nt"></repository></span> |
| <span class="nt"></repositories></span> |
| <span class="nt"><pluginRepositories></span> |
| <span class="nt"><pluginRepository></span> |
| <span class="nt"><id></span>codenvy-public-repo<span class="nt"></id></span> |
| <span class="nt"><name></span>codenvy public<span class="nt"></name></span> |
| <span class="nt"><url></span>https://maven.codenvycorp.com/content/groups/public/<span class="nt"></url></span> |
| <span class="nt"></pluginRepository></span> |
| <span class="nt"><pluginRepository></span> |
| <span class="nt"><id></span>codenvy-public-snapshots-repo<span class="nt"></id></span> |
| <span class="nt"><name></span>codenvy public snapshots<span class="nt"></name></span> |
| <span class="nt"><url></span>https://maven.codenvycorp.com/content/repositories/codenvy-public-snapshots/<span class="nt"></url></span> |
| <span class="nt"></pluginRepository></span> |
| <span class="nt"></pluginRepositories></span> |
| <span class="nt"><build></span> |
| <span class="nt"><resources></span> |
| <span class="nt"><resource></span> |
| <span class="nt"><directory></span>src/main/java<span class="nt"></directory></span> |
| <span class="nt"></resource></span> |
| <span class="nt"></resources></span> |
| <span class="nt"></build></span> |
| <span class="nt"></project></span> |
| </code></pre> |
| </div> |
| <p>Extensions can choose to reference the <a href="https://github.com/codenvy/che-parent">Che maven dependency management <code class="highlighter-rouge">pom.xml</code></a> which enforces coding standards incorporated throughout Che. It will also set dependencies version automatically. The <code class="highlighter-rouge"><repositories></code> tag provides a reference to Che’s maven repository hosted by Codenvy.</p> |
| |
| <p>Please notice the <code class="highlighter-rouge"><version></code> tag. Make sure you alter the version reference so it points to the correct version of Che that you installed (or merely the Git tag/branch you checked out). You can find out the correct Che version by looking at the che parent pom <code class="highlighter-rouge">/che/pom.xml</code>.</p> |
| |
| <p>We do not require you to use this parent configuration file. Therefore you can bypass the default Che parent configuration and use a custom maven configuration according to your needs.</p> |
| |
| <h2 id="licensing">Licensing</h2> |
| <p>Referencing the Che parent <code class="highlighter-rouge">pom.xml</code> enforces the Eclipse Che license header to be in place for all source files. You can execute <code class="highlighter-rouge">mvn license:format</code> to add license headers to your files. Or, to skip the license check add:</p> |
| |
| <div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="nt"><plugin></span> |
| <span class="nt"><groupId></span>com.mycila<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>license-maven-plugin<span class="nt"></artifactId></span> |
| <span class="nt"><configuration></span> |
| <span class="nt"><skip></span>true<span class="nt"></skip></span> |
| <span class="nt"></configuration></span> |
| <span class="nt"></plugin></span> |
| </code></pre> |
| </div> |
| <p>If you modify the <code class="highlighter-rouge">pom.xml</code> it needs to be sorted. Run <code class="highlighter-rouge">mvn sortpom:sort</code> to sort the <code class="highlighter-rouge">pom.xml</code>.</p> |
| |
| <h2 id="build-your-extension">Build Your Extension</h2> |
| <p>In your extension directory, run <code class="highlighter-rouge">mvn clean install</code>. This will build JAR files that bundle your extension.</p> |
| |
| <div class="language-text highlighter-rouge"><pre class="highlight"><code>/target |
| {your-extension-name}-{version}-sources.jar |
| {your-extension-name}-{version}.jar |
| </code></pre> |
| </div> |
| |
| <h1 id="linking-extensions">Linking Extensions</h1> |
| <p>After you compile your extension, they will be packaged as JAR files. Those JAR files will need to be included into Che and then you can create a custom assembly of Che that includes the JAR files of your extensions.</p> |
| |
| <h2 id="che-files-for-linking">Che Files For Linking</h2> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>File</th> |
| <th>Details</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td><code class="highlighter-rouge">/che/assembly/pom.xml</code></td> |
| <td><strong>Both server-side and client-side extensions.</strong> Due to a temporary limitation in version management, your dependency must also be added to the root Che build artifact.</td> |
| </tr> |
| <tr> |
| <td><code class="highlighter-rouge">/che/assembly/assembly-ide-war/pom.xml</code></td> |
| <td><strong>Client-side (IDE) extensions.</strong> Build file for main Che assembly.client side components, extension dependency should be added to this <code class="highlighter-rouge">pom.xml</code>.</td> |
| </tr> |
| <tr> |
| <td><code class="highlighter-rouge">/che/assembly/assembly-wsagent-war/pom.xml</code></td> |
| <td><strong>Server-side workspace extensions.</strong> Build file that generates the Che web application agent that is deployed inside of a running workspace. You can add your extension to be included with this agent by adding it as a dependency in this file. Update this if your extension brings a new server-side service or component, or extends an existing API deployed with a workspace agent.</td> |
| </tr> |
| <tr> |
| <td><code class="highlighter-rouge">/che/assembly/assembly-wsmaster-war/pom.xml</code></td> |
| <td><strong>Server-side Che server extensions.</strong> Add your extension as a dependency here if you want your server-side APIs to be accessible as part of the Che server. We call the workspace master (Che server) the location where master functions are provide like add / remove workspace. But if you just want server-side functionality that is available to the IDE, it must go into the workspace, which we call a workspace agent.</td> |
| </tr> |
| <tr> |
| <td><code class="highlighter-rouge">che/assembly/assembly-wsagent-server/pom.xml</code></td> |
| <td><strong>Optional</strong> This assembly constructs all of the pieces to create a Che agent server that will be packaged and deployed into any running workspace that has the dev-agent deployed into it. This Che agent server runs a Tomcat server that deploys any of your server-side workspace extensions along with other APIs required by Che to manage the workspace.</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h2 id="your-extension-identifier">Your Extension Identifier</h2> |
| <p>Every extension has a unique maven identifier. You will need to reference this identifier as a dependency. You can define your own identifiers for extensions or pull the identifier out of the <code class="highlighter-rouge">pom.xml</code> of the extension you are working with. For example, in the samples that are provided with che the <code class="highlighter-rouge">samples/sample-plugin-embedjs/</code> has a single module for the IDE, and the identifier for the IDE extension is located in <code class="highlighter-rouge">sample/sample-plugin-embedjs/che-sample-plugin-embedjs-ide/pom.xml</code>.</p> |
| |
| <div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="nt"><parent></span> |
| <span class="nt"><artifactId></span>che-sample-plugin-embedjs-parent<span class="nt"></artifactId></span> |
| <span class="nt"><groupId></span>org.eclipse.che.sample<span class="nt"></groupId></span> |
| <span class="nt"><version></span>5.4.0<span class="nt"></version></span> |
| <span class="nt"></parent></span> |
| <span class="nt"><artifactId></span>che-sample-plugin-embedjs-ide<span class="nt"></artifactId></span> |
| </code></pre> |
| </div> |
| <p>And the identifier of this extension is the <code class="highlighter-rouge">artifactId</code>, <code class="highlighter-rouge">groupId</code>, and <code class="highlighter-rouge">version</code> tags combined together. Tags can inherit values from parents if they are not explicitly defined in the <code class="highlighter-rouge">pom.xml</code>. So this extension has the identifier of.</p> |
| |
| <div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="nt"><artifactId></span>che-sample-plugin-embedjs-ide<span class="nt"></artifactId></span> |
| <span class="nt"><groupId></span>org.eclipse.che.sample<span class="nt"></groupId></span> |
| <span class="nt"><version></span>5.0.0<span class="nt"></version></span> |
| </code></pre> |
| </div> |
| <h2 id="add-extension-to-root-che-pom">Add Extension To Root Che POM</h2> |
| <p>In order to allow your extension to be visible from the root level of Che, add your extension as a dependency in the list of <code class="highlighter-rouge"><dependencies></code> from the <code class="highlighter-rouge"><dependencyManagement></code>block. There are a lot of them in the root <code class="highlighter-rouge">pom.xml</code>. To avoid transitive dependencies, we require every dependency to be explicitly listed and added. This will save you a lot of pain in the future from having circular references.</p> |
| |
| <div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="nt"><dependencyManagement></span> |
| <span class="nt"><dependencies></span> |
| ... |
| <span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.eclipse.che.sample<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>che-sample-plugin-embedjs-ide<span class="nt"></artifactId></span> |
| <span class="nt"><version></span>${che.version}<span class="nt"></version></span> |
| <span class="nt"></dependency></span> |
| ... |
| <span class="nt"></dependencies></span> |
| <span class="nt"></dependencyManagement></span> |
| </code></pre> |
| </div> |
| <p>You can insert the dependency anywhere in the list. After you have inserted it, run <code class="highlighter-rouge">mvn sortpom:sort</code> and maven will order the <code class="highlighter-rouge">pom.xml</code> for you.</p> |
| |
| <h4 id="optional-skip-enforcement">Optional: Skip Enforcement</h4> |
| <p>By default, Che has the Maven enforcer plug-in activated. When this plugin is activated, your dependency must be declared in the root <code class="highlighter-rouge">pom.xml</code>. You can skip enforcement, which will not require your extension to be in the root <code class="highlighter-rouge">pom.xml</code>. You skip enforcement by building <code class="highlighter-rouge">-Denforcer.skip=true</code>.</p> |
| |
| <h2 id="ide-extension-link-to-assembly">IDE Extension: Link To Assembly</h2> |
| <p>To include your jar files within the Che assemblies you have to introduce your extension as a dependency in <code class="highlighter-rouge">/che/assembly/assembly-ide-war/pom.xml</code> and also have it added as a dependency to the GWT application. First add the dependency:</p> |
| |
| <div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.eclipse.che.sample<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>che-sample-plugin-embedjs-ide<span class="nt"></artifactId></span> |
| <span class="nt"></dependency></span> |
| </code></pre> |
| </div> |
| <p>You can insert the dependency anywhere in the list. After you have inserted it, run <code class="highlighter-rouge">mvn sortpom:sort</code> and maven will order the <code class="highlighter-rouge">pom.xml</code> for you.</p> |
| |
| <p>Once you have added the IDE extension, you need to rebuild the IDE.</p> |
| |
| <div class="language-shell highlighter-rouge"><pre class="highlight"><code><span class="c"># Build a new IDE.war</span> |
| <span class="c"># This IDE web app will be bundled into the assembly</span> |
| <span class="nb">cd </span>che/assembly/assembly-ide-war |
| mvn clean install |
| |
| <span class="c"># Create a new Che assembly that includes all new server- and client-side extensions</span> |
| <span class="nb">cd </span>assembly/assembly-main |
| mvn clean install |
| |
| |
| <span class="c"># Start Che</span> |
| docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock <span class="se">\</span> |
| -v <<span class="nb">local</span>-path>:/data <span class="se">\</span> |
| -v <<span class="nb">local</span>-repo>:/repo <span class="se">\</span> |
| eclipse/che:<version> start |
| </code></pre> |
| </div> |
| |
| <h2 id="server-side-workspace-extensions-link-to-assembly">Server Side Workspace Extensions: Link To Assembly</h2> |
| <p>To include your jar files within the Che assemblies you have to introduce your extension as a dependency in <code class="highlighter-rouge">/che/assembly/assembly-wsagent-war/pom.xml</code> and then rebuild the agent server.</p> |
| |
| <div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.eclipse.che<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>che-examples-service<span class="nt"></artifactId></span> |
| <span class="nt"></dependency></span> |
| </code></pre> |
| </div> |
| <p>Once you have added the server-side extension as a dependency, you need to rebuild the agent that is deployed into the workspace.</p> |
| |
| <div class="language-shell highlighter-rouge"><pre class="highlight"><code><span class="c"># Create a new web-app that includes your server-side extension</span> |
| <span class="nb">cd </span>che/assembly/assembly-wsagent-war |
| mvn clean install |
| |
| <span class="c"># Creates a new agent that includes your server web app that will deploy into workspace</span> |
| <span class="nb">cd </span>che/assembly/assembly-wsagent-server |
| mvn clean install |
| |
| <span class="c"># Create a new Che assembly that includes all new server- and client-side extensions</span> |
| <span class="nb">cd </span>assembly/assembly-main |
| mvn clean install |
| |
| <span class="c"># Start Che</span> |
| docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock <span class="se">\</span> |
| -v <<span class="nb">local</span>-path>:/data <span class="se">\</span> |
| -v <<span class="nb">local</span>-repo>:/repo <span class="se">\</span> |
| eclipse/che:<version> start |
| </code></pre> |
| </div> |
| <p>To start Che from the custom assembly you just built, you can refer to this <a href="../../../docs/setup/configuration/index.html#development-mode">Usage: Development Mode Launcher</a></p> |
| |
| <h2 id="server-side-che-server-extensions-link-to-assembly">Server Side Che Server Extensions: Link To Assembly</h2> |
| <p>To include your jar files within the Che assemblies you have to introduce your extension as a dependency in <code class="highlighter-rouge">/che/assembly/assembly-wsmaster-war/pom.xml</code> and then rebuild the Che server, which we call master.</p> |
| |
| <div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="nt"><dependency></span> |
| <span class="nt"><groupId></span>org.eclipse.che<span class="nt"></groupId></span> |
| <span class="nt"><artifactId></span>che-examples-service<span class="nt"></artifactId></span> |
| <span class="nt"></dependency></span> |
| </code></pre> |
| </div> |
| <p>Once you have added the extension to the Che server, you need to rebuild the Che server.</p> |
| |
| <div class="language-shell highlighter-rouge"><pre class="highlight"><code><span class="c"># Create a new Che server web app that includes your Che server extension</span> |
| <span class="nb">cd </span>che/assembly/assembly-wsmaster-war |
| mvn clean install |
| |
| <span class="c"># Create a new Che assembly that includes all new server- and client-side extensions</span> |
| <span class="nb">cd </span>assembly/assembly-main |
| mvn clean install |
| |
| <span class="c"># Start Che</span> |
| docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock <span class="se">\</span> |
| -v <<span class="nb">local</span>-path>:/data <span class="se">\</span> |
| -v <<span class="nb">local</span>-repo>:/repo <span class="se">\</span> |
| eclipse/che:<version> start |
| </code></pre> |
| </div> |
| |
| <p>To start Che from the custom assembly you just built, you can refer to this <a href="../../../docs/setup/configuration/index.html#development-mode">Usage: Development Mode Launcher</a></p> |
| |
| <h1 id="loading-sequence">Loading Sequence</h1> |
| <p>There are three ways your extension code is invoked:</p> |
| <ol> |
| <li>Compiled into the Che IDE application.</li> |
| <li>When the Che IDE application is activated your GIN modules are invoked.</li> |
| <li>When the Che server boots your Guice modules are invoked.</li> |
| </ol> |
| |
| <div class="language-shell highlighter-rouge"><pre class="highlight"><code>CHE ASSEMBLY YOUR PLUGIN <span class="o">(</span>title: YourExtension<span class="o">)</span> |
| ------------ ---------------------------------- |
| IDE.gwt.xml ------> references -----> YourExtension.gwt.xml |
| pom.xml ----------> builds ---------> YourExtension.java |
| | |
| | builds |
| | |
| đź”» |
| Che IDE --------> injects --------> YourGinModule.java <span class="o">(</span>optional<span class="o">)</span> |
| |
| |
| CHE RUNTIME |
| ----------- |
| @boot ------------> injects --------> YourGuiceModule.java <span class="o">(</span>optional<span class="o">)</span> |
| |
| </code></pre> |
| </div> |
| |
| <p>The Che assembly is the root Che project that builds a number of assemblies from a set of system plug-ins together with your custom plug-in. The Che assembly has a master configuration file, <code class="highlighter-rouge">/assembly/assembly-ide-war/src/main/resources/org/eclipse/che/ide/IDE.gwt.xml</code> which defines the modules to compile into the application.</p> |
| |
| <p>To manually add your plug-in to the Che assembly, you update the assembly <code class="highlighter-rouge">pom.xml</code> with information about your plug-in. Inheritance to gwt.xml is automatically added when an assembly is compiled. When the Che assembly is built, it will download your extension as a dependency and compile it into the Che IDE application. The Che IDE application will use dependency injection to load any Gin modules. When you boot Che within tomcat or another application server, Che uses Guice to load any server-side modules for dependency injection.</p> |
| |
| <p>Your extension may require access to types provides by Che or the Che API, i.e. if you are implementing a custom project type or wizard. Che objects can be injected with Gin and Guice which enables your extension to make use of them.</p> |
| |
| <h1 id="improving-incremental-builds">Improving Incremental Builds</h1> |
| <p>There are a number of tweaks you can use to speed up the various stages of development. One possibility to speed up the initial build and packaging process is by disabling tests and skipping certain maven plugins.</p> |
| |
| <div class="language-shell highlighter-rouge"><pre class="highlight"><code><span class="c"># Add flags to skip the testing and code analysis phases of maven</span> |
| mvn clean install -DskipTests -Dskip-validate-sources -Dgwt.compiler.localWorkers<span class="o">=</span>4 -Dfindbugs.skip<span class="o">=</span><span class="nb">true</span> |
| </code></pre> |
| </div> |
| |
| <p>In the IDE GWT module:</p> |
| |
| <div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="c"><!-- In /assembly/assembly-ide-war/src/main/resources/org/eclipse/che/ide/IDE.gwt.xml --></span> |
| |
| <span class="c"><!-- Tell Che to only build one type of browser JavaScript --></span> |
| <span class="c"><!-- Values can be 'safari' or 'firefox'. Safari builds for chrome --></span> |
| <span class="nt"><set-property</span> <span class="na">name=</span><span class="s">"user.agent"</span> <span class="na">value=</span><span class="s">"safari"</span><span class="nt">/></span> |
| |
| <span class="c"><!-- Reduces compiler permutations through some GWT magic. --></span> |
| <span class="c"><!-- See https://github.com/gwtproject/old_google_code_wiki/blob/master/SoftPermutations.wiki.md --></span> |
| <span class="nt"><collapse-all-properties</span> <span class="nt">/></span> |
| </code></pre> |
| </div> |
| |
| </article> |
| </div> |
| |
| <div class="unit one-fifth hide-on-mobiles"> |
| <aside> |
| |
| |
| <h4>SETUP</h4> |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/index.html">Introduction</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/getting-started/index.html">Getting Started: Local</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/getting-started-saas-cloud/index.html">Getting Started: SaaS Cloud</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/configuration/index.html">Configuration</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/managing/index.html">Managing</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/cli/index.html">CLI Reference</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/glossary/index.html">Glossary</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/docker/index.html">Docker Installation</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/openshift/index.html">OpenShift Installation</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/setup/selenium/index.html">How to run selenium tests</a></li> |
| |
| |
| |
| </ul> |
| |
| |
| |
| |
| |
| <h4>WORKSPACE ADMINISTRATION</h4> |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/intro/index.html">Introduction</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/runtime-stacks/index.html">Runtime Stacks</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/runtime-recipes/index.html">Runtime Recipes</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/project-samples/index.html">Project Samples</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/runtime-machines/index.html">Runtime Machines</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/volume-mounts/index.html">Volume Mounts</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/ws-agents/index.html">Workspace Agents</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/workspaces-data-model/index.html">Workspace Data Model</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/runtime-stacks-data-model/index.html">Runtime Stacks Data Model</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/devops/project-samples-data-model/index.html">Project Samples Data Model</a></li> |
| |
| |
| |
| </ul> |
| |
| |
| |
| |
| |
| <h4>USER GUIDE</h4> |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/projects/index.html">Projects</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/import-a-project/index.html">Import</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/ssh/index.html">SSH</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/sync/index.html">Local IDE Sync</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/editor-settings/index.html">Editor</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/intellisense/index.html">Intellisense</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/commands/index.html">Commands</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/git-svn/index.html">Git and SVN</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/previews/index.html">Previews</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/build/index.html">Build</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/run/index.html">Run</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/sharing/index.html">Share</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/debug/index.html">Debug</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/docker/index.html">Docker</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/ide/electron/index.html">Install Che Desktop Client</a></li> |
| |
| |
| |
| </ul> |
| |
| |
| |
| |
| |
| <h4>PORTABLE WORKSPACES</h4> |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/getting-started/index.html">Chedir - Getting Started</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/why/index.html">Chedir - Why Chedir?</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/installation/index.html">Chedir - Installation</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/project-setup/index.html">Chedir - Project Setup</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/up-and-down/index.html">Chedir - Up and Down</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/chefiles/index.html">Chedir - Chefile</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/ssh/index.html">Chedir - SSH</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/chedir/factories/index.html">Chedir - Factories</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/factory/getting-started/index.html">Factory - Getting Started</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/factory/creating/index.html">Factory - Creating</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/factory/json-reference/index.html">Factory - JSON Reference</a></li> |
| |
| |
| |
| </ul> |
| |
| |
| |
| |
| |
| <h4>DEVELOPER GUIDE - REST API</h4> |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/intro/index.html">Introduction</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/archetype/index.html">Archetype</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/assembly-lifecycle/index.html">Assembly Dev Lifecycle</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="current"><a href="../../../docs/assemblies/plugin-lifecycle/index.html">Plugin Lifecycle</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-rest-apis/index.html">SDK REST APIs</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-class-reference/index.html">SDK Class Reference</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-dependency-injection/index.html">SDK Dependency Injection</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-dto/index.html">SDK DTOs</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-properties/index.html">SDK Properties</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-code-editors/index.html">SDK Editors</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-embed-htmljs/index.html">SDK Embedded JavaScript</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-project-types/index.html">SDK Project Types</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-actions/index.html">SDK Actions</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-services/index.html">SDK Services</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-parts/index.html">SDK Parts</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-themes/index.html">SDK Themes</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-custom-agents/index.html">SDK Custom Agents</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-language-server-protocol/index.html">SDK Language Server Protocol</a></li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class=""><a href="../../../docs/assemblies/sdk-workspace/index.html">SDK Workspace</a></li> |
| |
| |
| |
| </ul> |
| |
| |
| |
| |
| |
| </aside> |
| </div> |
| |
| |
| <div class="clear"></div> |
| |
| </div> |
| </section> |
| |
| |
| |
| <script> |
| var anchorForId = function (id) { |
| var anchor = document.createElement("a"); |
| anchor.className = "header-link"; |
| anchor.href = "#" + id; |
| anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>"; |
| anchor.title = "Permalink"; |
| return anchor; |
| }; |
| |
| var linkifyAnchors = function (level, containingElement) { |
| var headers = containingElement.getElementsByTagName("h" + level); |
| for (var h = 0; h < headers.length; h++) { |
| var header = headers[h]; |
| |
| if (typeof header.id !== "undefined" && header.id !== "") { |
| header.appendChild(anchorForId(header.id)); |
| } |
| } |
| }; |
| |
| document.onreadystatechange = function () { |
| if (this.readyState === "complete") { |
| var contentBlock = document.getElementsByClassName("artik")[0] || document.getElementsByClassName("openshift")[0] || document.getElementsByClassName("tutorials")[0] || document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0]; |
| if (!contentBlock) { |
| return; |
| } |
| for (var level = 1; level <= 6; level++) { |
| linkifyAnchors(level, contentBlock); |
| } |
| } |
| }; |
| </script> |
| |
| |
| |
| |
| |
| |
| </body> |
| </html> |