geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rmannibu...@apache.org
Subject svn commit: r1052162 [2/2] - in /websites/production/geronimo/content/arthur: api.html community.html css/ css/arthur.css documentation.html downloads.html implementation.html index.html js/ js/arthur.js maven.html spi.html
Date Wed, 30 Oct 2019 11:18:09 GMT
Added: websites/production/geronimo/content/arthur/maven.html
==============================================================================
--- websites/production/geronimo/content/arthur/maven.html (added)
+++ websites/production/geronimo/content/arthur/maven.html Wed Oct 30 11:18:09 2019
@@ -0,0 +1,1577 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8"/>
+    <title>Apache Geronimo Arthur Maven</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="Apache Geronimo Arthur Site">
+    <meta name="author" content="Apache">
+    <meta name="keywords" content="Apache Geronimo Arthur">
+    <meta name="generator" content="Arthur Site Generator">
+
+    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" rel="stylesheet"
+          integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous">
+    <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"
+          integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css"
+          integrity="sha256-IPtNBA1od/cGBfXTxYDxuT5+Y2BKy14o6j0FaIXDmYk=" crossorigin="anonymous"/>
+    <link href="https://stackpath.bootstrapcdn.com/bootswatch/4.3.1/flatly/bootstrap.min.css" rel="stylesheet"
+          integrity="sha384-T5jhQKMh96HMkXwqVMSjF3CmLcL1nT9//tCqu9By5XSdj7CwR0r+F3LTzUdfkkQf" crossorigin="anonymous">
+    <link rel="stylesheet" href="css/arthur.css"/>
+
+    <!--[if lt IE 9]>
+    <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 cz-shortcut-listen="true">
+
+<div class="navbar navbar-expand-lg fixed-top navbar-dark bg-primary">
+    <div class="container">
+        <a href="index.html" class="navbar-brand">Apache Geronimo Arthur</a>
+        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive"
+                aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
+            <span class="navbar-toggler-icon"></span>
+        </button>
+        <div class="collapse navbar-collapse" id="navbarResponsive">
+            <ul class="navbar-nav">
+                <li class="nav-item">
+                    <a class="nav-link" href="https://www.apache.org/">Apache</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="documentation.html">Documentation</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="community.html">Community</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="downloads.html">Downloads</a>
+                </li>
+                <li class="nav-item dropdown">
+                    <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" id="asf-links">ASF <span
+                            class="caret"></span></a>
+                    <div class="dropdown-menu" aria-labelledby="asf-links">
+                        <a class="dropdown-item" href="https://www.apache.org/licenses/">License</a>
+                        <a class="dropdown-item"
+                           href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
+                        <a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+                        <div class="dropdown-divider"></div>
+                        <a class="dropdown-item" href="https://www.apache.org/security/">Security</a>
+                    </div>
+                </li>
+            </ul>
+        </div>
+    </div>
+</div>
+
+<div class="container page-header"><div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Arthur Maven plugin provides a way to generate <code>native-image</code> configuration and execute it.
+It also enables to automatically download GraalVM avoiding you to manage the installation part.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_get_started_in_5_minutes">Get started in 5 minutes</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>First thing to do to enable a native build of your application is to add the plugin with your application entry point (<code>main(String[])</code>):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;plugin&gt;
+    &lt;groupId&gt;org.apache.geronimo.arthur&lt;/groupId&gt;
+    &lt;artifactId&gt;arthur-maven-plugin&lt;/artifactId&gt;
+    &lt;version&gt;${arthur.version}&lt;/version&gt;
+    &lt;configuration&gt;
+        &lt;main&gt;org.kamelot.Florida&lt;/main&gt; <i class="conum" data-value="1"></i><b>(1)</b>
+    &lt;/configuration&gt;
+&lt;/plugin&gt;</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>The application to compile natively</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Once it is done, you can run <code>mvn [process-classes] arthur:native-image</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_graal_setup">Graal Setup</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You probably notices that in previous part we didn&#8217;t mention you need to set your <code>JAVA_HOME</code> to a Graal instance or so.
+This is because the plugin is able to download GraalVM if it is not already done and to install - using GraalVM <code>gu</code> tool - `native-image`extension.
+You will find all the details of that feature in the configuration section but it is important to note a few points:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>You can explicit the <code>native-image</code> instance to use and avoid the implicit installation setting the configuration <code>nativeImage</code>,</p>
+</li>
+<li>
+<p>GraalVM version is configurable (note that it relies on SDKMan by default so ensure the last version you want to upgrade immediately is available),</p>
+</li>
+<li>
+<p>The plugin caches the GraalVM archive and its unpack flavor in your local maven repository to avoid to download and explode it each time.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_execution_example">Execution example</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Here is a dump of a sample execution:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>$ mvn arthur:native-image -o
+[INFO] Scanning for projects...
+[INFO]
+[INFO] ---------------------&lt; org.apache.geronimo.arthur:sample &gt;---------------------
+[INFO] Building Arthur :: Sample 1.0.0-SNAPSHOT
+[INFO] --------------------------------[ jar ]---------------------------------
+[INFO]
+[INFO] --- arthur-maven-plugin:1.0.0-SNAPSHOT:native-image (default-cli) @ jdbc ---
+[INFO] Using GRAAL: /home/rmannibucau/.m2/repository/org/apache/geronimo/arthur/cache/graal/19.2.1/distribution_exploded <i class="conum" data-value="1"></i><b>(1)</b>
+[INFO] Extension org.apache.geronimo.arthur.maven.extension.MavenArthurExtension updated build context <i class="conum" data-value="2"></i><b>(2)</b>
+[INFO] Creating resources model '/opt/dev/arthur/sample/target/arthur_workdir/generated_configuration/resources.arthur.json' <i class="conum" data-value="3"></i><b>(3)</b>
+[INFO] Creating dynamic proxy model '/opt/dev/arthur/sample/target/arthur_workdir/generated_configuration/dynamicproxies.arthur.json' <i class="conum" data-value="3"></i><b>(3)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]    classlist:   6,427.14 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]        (cap):   2,126.93 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]        setup:   3,480.51 ms <i class="conum" data-value="4"></i><b>(4)</b>
+ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated
+ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]   (typeflow):  15,605.58 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]    (objects):  11,369.56 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]   (features):   1,901.64 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]     analysis:  30,057.86 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]     (clinit):     568.59 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]     universe:   1,196.02 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]      (parse):   2,334.15 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]     (inline):   3,093.09 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]    (compile):  20,410.16 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]      compile:  27,352.51 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]        image:   2,792.40 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]        write:     677.26 ms <i class="conum" data-value="4"></i><b>(4)</b>
+/opt/dev/arthur/sample/target/sample.graal.bin:16697]      [total]:  72,280.13 ms <i class="conum" data-value="4"></i><b>(4)</b>
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESS
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time:  01:14 min
+[INFO] Finished at: 2019-10-29T17:55:16+01:00
+[INFO] ------------------------------------------------------------------------</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>The GraalVM distribution was already existing so was not download and was directly used,</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="2"></i><b>2</b></td>
+<td>Maven inline Graal configuration (resources, reflection, bundles) was set up,</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="3"></i><b>3</b></td>
+<td>Dynamic (Arthur prebuild phase) configuration was dumped before launching <code>native-image</code>,</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="4"></i><b>4</b></td>
+<td><code>native-image</code> execution/phases</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_native_image_mojo_configuration">Native Image Mojo configuration</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The plugin is quite configurable and even enable to build a main in a test scope.
+Here is the full list of available configuration.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Name</th>
+<th class="tableblock halign-left valign-top">Type</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">addAllCharsets</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should all charsets be added.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.addAllCharsets</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allowIncompleteClasspath</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should incomplete classpath be tolerated.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.allowIncompleteClasspath</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">buildStaticImage</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should the image be static or dynamic (jvm part).</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.buildStaticImage</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">bundles</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Inline resource bundle model (appended to {@link #reflectionConfigurationFiles}.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: -</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">classpath</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>custom pre-built classpath, if not set it defaults on the project dependencies.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.classpath</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">customOptions</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>custom native-image arguments.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.customOptions</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dynamicProxies</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Inline dynamic proxy configuration (appended to {@link #dynamicProxyConfigurationFiles}).</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: -</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dynamicProxyConfigurationFiles</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>JSON java.lang.reflect.Proxy configuration.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.dynamicProxyConfigurationFiles</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">enableAllSecurityServices</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should security services be included.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.enableAllSecurityServices</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">enforceMaxRuntimeCompileMethods</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Enforce {@link #maxRuntimeCompileMethods}.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.enforceMaxRuntimeCompileMethods</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">excludedArtifacts</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>groupId:artifactId list of ignored artifact during the pre-build phase.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.excludedArtifacts</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">fallbackMode</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ArthurNativeImageConfiguration.FallbackMode</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Behavior when native compilation fails, it is recommended to keep it to "no".</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: no</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.fallbackMode</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">graalDownloadUrl</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>In case Graal must be downloaded to get native-image, where to take it from.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: <a href="https://api.sdkman.io/2/broker/download/java/${graalVersion}-grl/${platform}" class="bare">https://api.sdkman.io/2/broker/download/java/${graalVersion}-grl/${platform}</a></p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.graalDownloadUrl</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">graalExtensions</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>{@code &lt;groupId&gt;:&lt;artifactId&gt;[:&lt;extension&gt;[:&lt;classifier&gt;]]:&lt;version&gt;} list of artifacts appended to graal build.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.graalExtensions</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">graalPlatform</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>In case Graal must be downloaded to get native-image, which platform to download, auto will handle it for you.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: auto</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.graalPlatform</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">graalVersion</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>In case Graal must be downloaded to get native-image, which version to download.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: 19.2.1</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.graalVersion</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">groupId:artifactI</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>In case Graal must be downloaded to get native-image, it will be cached in the local repository with this gav.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: org.apache.geronimo.arthur.cache:graal</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.graalCacheGav</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">includeResourceBundles</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>resource bundle qualified names to include.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.includeResourceBundles</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">inheritIO</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>The execution will fork native-image process, should IO be inherited from maven process (recommended).</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.inheritIO</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">initializeAtBuildTime</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Classes to initialize at build time.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.initializeAtBuildTime</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">initializeAtRunTime</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Classes to intiialize at run time.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.initializeAtRunTime</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">main*</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Which main to compile.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.main</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">maxRuntimeCompileMethods</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Limit the number of compilable methods.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: 1000</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.maxRuntimeCompileMethods</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">nativeImage</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Generates a native binary from current project.native-image binary to use, if not set it will install graal in the local repository.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.nativeImage</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">noServer</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should graal build server be used (a bit like gradle daemon), it is very discouraged to be used cause invalidation is not yet well handled.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.noServer</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">output</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Where to put the output binary.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: ${project.build.directory}/${project.artifactId}.graal.bin</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.output</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">printClassInitialization</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should initialiation of classes be printed - mainly for debug purposes.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: false</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.printClassInitialization</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">propertiesPrefix</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Once built, the binary path is set in maven properties.This enables to configure the prefix to use.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: arthur.</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.propertiesPrefix</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">reflectionConfigurationFiles</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>JSON reflection configuration.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.reflectionConfigurationFiles</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">reflections</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Inline configuration model (appended to {@link #reflectionConfigurationFiles}.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: -</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">reportExceptionStackTraces</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should exception stacks be reported.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.reportExceptionStackTraces</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">reportUnsupportedElementsAtRuntime</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should unsupported element be reported at runtime or not. It is not a recommended option but it is often needed.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.reportUnsupportedElementsAtRuntime</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">resources</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Inline resources model (appended to {@link #resourcesConfigurationFiles}.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: -</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">resourcesConfigurationFiles</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>JSON resources configuration.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.resourcesConfigurationFiles</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">skip</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should this mojo be skipped.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.skip</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supportTestArtifacts</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should the build be done with test dependencies (and binaries).</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: false</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.supportTestArtifacts</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">supportedTypes</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>List of types used in the build classpath, typically enables to ignore tar.gz/natives for example.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: jar,zip</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.supportedTypes</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">traceClassInitialization</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should class initialition be tracked.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.traceClassInitialization</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">usePackagedArtifact</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should jar be used instead of exploded folder (target/classes).Note this option disable the support of module test classes.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: false</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: project.usePackagedArtifact</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">useTcclAsScanningParentClassLoader</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>By default arthur runs the extension with a dedicated classloader built from the project having as parent the JVM,this enables to use the mojo as parent instead).</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: false</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.useTcclAsScanningParentClassLoader</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">workdir</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Where the temporary files are created.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: ${project.build.directory}/arthur_workdir</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: -</p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_what_about_docker">What about docker?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>One of the main reasons to go native is to reduce the startup latency and the memory consumption.
+This is literally a paraphrase to say we want to run into Kubernetes.
+Therefore the question to bundle the native binary as a docker image comes pretty quickly.</p>
+</div>
+<div class="sect2">
+<h3 id="_sample_dockerfile">Sample Dockerfile</h3>
+<div class="paragraph">
+<p>There are multiple option to create a docker image but one interesting point to mention is to build the binary in a docker image to ensure the target binary matches the target image architecture.
+For that case, we recommend you to build your project as you want, copy the project in a builder docker image and use a multi-stage builder to ensure you build on the platform you will run (the <code>FROM</code> of your <code>Dockerfile</code>).</p>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+to avoid a lot of downloads/latency it can be neat to <strong>not</strong> bind <code>arthur:native-image</code> plugin goal to any phase and just call it explicitly in your build. To do that just use <code>&lt;phase /&gt;</code> instead of an explicit phase if you define a custom execution.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Here is an example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-Dockerfile" data-lang="Dockerfile">FROM maven:3.6-jdk-8-slim AS builder
+COPY . /project
+COPY target/m2 /root/.m2/repository
+WORKDIR /project
+RUN mvn package arthur:native-image
+
+FROM scratch
+COPY --from=builder /project/target/myapp.graal.bin /project/myapp.graal.bin
+ENTRYPOINT [ "/project/myapp.graal.bin" ]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To avoid to download all needed dependencies all the time don&#8217;t forget to prepare a local copy of the maven repository, here is how to launch this docker creation assuming you put this <code>Dockerfile</code> at the root of your maven project:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-sh" data-lang="sh"># prepare the local copy of the m2 with dependency plugin (for examples, some other plugins will also include build maven plugins in the dedicated m2)
+mvn dependency:copy-dependencies -Dmdep.useRepositoryLayout=true -DoutputDirectory=target/m2
+
+# actually build
+docker build -t sample:latest</code></pre>
+</div>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+you can also do the package on your machine and skip it in the docker build but the tip to prepare a local m2 copy is still helping to speed up the build.
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+if you use private repositories, don&#8217;t forget to copy your settings.xml as well (in <code>/root/.m2</code> for <code>maven</code>/builder image).
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+when building on a jenkins running on Kubernetes, ensure to use a build image with an architecture compatible, this avoids all that setup and you can just run it directly as if it was locally.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_jib_to_create_an_image">Jib to create an image</h3>
+<div class="paragraph">
+<p>Jib is an awesome project propulsed by Google enabling to build docker images without docker.
+It can be used to put your binary into a very light image (based on the "empty" <code>scratch</code> one). Here is how to add it to your pom:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;plugin&gt; <i class="conum" data-value="1"></i><b>(1)</b>
+    &lt;groupId&gt;com.google.cloud.tools&lt;/groupId&gt;
+    &lt;artifactId&gt;jib-maven-plugin&lt;/artifactId&gt;
+    &lt;version&gt;1.7.0&lt;/version&gt;
+    &lt;configuration&gt;
+        &lt;from&gt;
+            &lt;image&gt;scratch&lt;/image&gt; <i class="conum" data-value="2"></i><b>(2)</b>
+        &lt;/from&gt;
+        &lt;to&gt;
+            &lt;image&gt;sample:latest&lt;/image&gt;
+        &lt;/to&gt;
+        &lt;extraDirectories&gt;
+            &lt;paths&gt;
+                &lt;path&gt;${project.build.directory}/graal&lt;/path&gt; <i class="conum" data-value="3"></i><b>(3)</b>
+            &lt;/paths&gt;
+            &lt;permissions&gt;
+                &lt;permission&gt; <i class="conum" data-value="4"></i><b>(4)</b>
+                    &lt;file&gt;/sample.graal.bin&lt;/file&gt;
+                    &lt;mode&gt;755&lt;/mode&gt;
+                &lt;/permission&gt;
+            &lt;/permissions&gt;
+        &lt;/extraDirectories&gt;
+        &lt;container&gt;
+            &lt;creationTime&gt;USE_CURRENT_TIMESTAMP&lt;/creationTime&gt;
+            &lt;entrypoint&gt;
+                &lt;arg&gt;/sample.graal.bin&lt;/arg&gt; <i class="conum" data-value="5"></i><b>(5)</b>
+            &lt;/entrypoint&gt;
+        &lt;/container&gt;
+    &lt;/configuration&gt;
+&lt;/plugin&gt;</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>Add <code>jib-maven-plugin</code> in your <code>pom.xml</code></td>
+</tr>
+<tr>
+<td><i class="conum" data-value="2"></i><b>2</b></td>
+<td>Use <code>scratch</code> keyword as base image (which almost means "nothing" or "empty image")</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="3"></i><b>3</b></td>
+<td>Reference the folder containing your binary (you can desire to tune the <code>output`parameter of the `arthur-maven-plugin</code> to ensure the folder only contains your binary since the full folder will be added to the image)</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="4"></i><b>4</b></td>
+<td>Ensure the binary has the right permission (executable)</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="5"></i><b>5</b></td>
+<td>Set the binary as entrypoint</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Then you can create your docker image just launching: <code>mvn jib:dockerBuild</code>.</p>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+you can also directly push to a remote repository without the need of having a local docker daemon, see Jib documentation for more details.
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+in current jib version, the dependencies are build artifacts are still added to the image so you can have some "dead" code with that option.
+To avoid it you can switch to <code>arthur:docker</code> or <code>arthur:image</code>  goals.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_arthur_docker">Arthur Docker</h3>
+<div class="paragraph">
+<p><code>arthur-maven-plugin</code> enables to build a docker image with a plain binary built with <code>native-image</code>.
+Its usage is close to jib - with a simpler configuration - but it also can be combine with <code>native-image</code> goal:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-bash" data-lang="bash">mvn arthur:native-image arthur:docker</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Output looks like:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>$ mvn arthur:native-image arthur:docker
+[INFO] Scanning for projects...
+[INFO]
+[INFO] ---------------------&lt; org.apache.geronimo.Arthur:sample &gt;---------------------
+[INFO] Building Arthur :: Sample 1.0.0-SNAPSHOT
+[INFO] --------------------------------[ jar ]---------------------------------
+[INFO]
+[INFO] --- arthur-maven-plugin:1.0.0-SNAPSHOT:native-image (default-cli) @ sample ---
+[INFO] Using GRAAL: /home/rmannibucau/.m2/repository/org/apache/geronimo/arthur/cache/graal/19.2.1/distribution_exploded
+[INFO] Extension org.apache.geronimo.arthur.maven.extension.MavenArthurExtension updated build context
+[INFO] Creating resources model '/media/data/home/rmannibucau/1_dev/connectors-se/jdbc/target/arthur_workdir/generated_configuration/resources.arthur.json'
+[INFO] Creating dynamic proxy model '/media/data/home/rmannibucau/1_dev/connectors-se/jdbc/target/arthur_workdir/generated_configuration/dynamicproxies.arthur.json'
+...same as before
+[INFO]
+[INFO] --- arthur-maven-plugin:1.0.0-SNAPSHOT:docker (default-cli) @ sample ---
+[INFO] Containerizing application with the following files:
+[INFO] 	Binary:
+[INFO] 		/opt/geronimo/arthur/sample/target/sample.graal.bin
+[INFO] Getting scratch base image...
+[INFO] Building Binary layer...
+[INFO]
+[INFO] Container entrypoint set to [/sample]
+[INFO] Container program arguments set to []
+[INFO] Loading to Docker daemon...
+[INFO] Built 'sample:1.0.0-SNAPSHOT'
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESS
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time:  01:29 min
+[INFO] Finished at: 2019-10-30T10:51:43+01:00
+[INFO] ------------------------------------------------------------------------</code></pre>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_configuration">Configuration</h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Name</th>
+<th class="tableblock halign-left valign-top">Type</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allowInsecureRegistries</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Are insecure registries allowed.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: false</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.allowInsecureRegistries</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">applicationLayersCache</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Where to cache application layers.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: ${project.build.directory}/arthur_jib_cache/application</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.applicationLayersCache</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">baseLayersCache</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Where to cache base layers layers (if any).</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: ${project.build.directory}/arthur_jib_cache/base</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.baseLayersCache</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">binarySource</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Where is the binary to include. It defaults on native-image output if done before in the same execution</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.binarySource</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">creationTimestamp</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Timestamp creation for the image, it is recommended to set it fixed for reproducibility.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: 1</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.creationTimestamp</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">enableCache</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should base images be cached.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.enableCache</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">entrypoint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Entry point to use.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: /${project.artifactId}</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.entrypoint</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">environment</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Map</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Image environment.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.environment</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">from</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Base image to use. Scratch will ensure it starts from an empty image.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: scratch</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.from</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">labels</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Map</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Image labels.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.labels</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">otherFiles</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Other files to include in the image, note that their permissions will not be executable.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.files</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ports</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Ports to expose.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.ports</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">programArguments</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Program arguments.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.programArguments</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">propertiesPrefix</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Once built, the binary path is set in maven properties.This enables to configure the prefix to use.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: arthur.</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.propertiesPrefix</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">threads</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Number of threads used to build.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: 1</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.threads</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">timeout</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Build timeout in milliseconds if it is using threads &gt; 1.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: 3600000</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.timeout</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">to</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Target image name.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: ${project.artifactId}:${project.version}</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.to</p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_arthur_image">Arthur Image</h3>
+<div class="paragraph">
+<p>Similarly to docker goal, the plugin can generate an image.
+To do it just replace the <code>arthur:docker</code> by <code>arthur:image</code>.</p>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+this goal does <strong>not</strong> need a docker daemon on the machine, it just uses HTTP(S) communication with a registry.
+</td>
+</tr>
+</table>
+</div>
+<div class="sect3">
+<h4 id="_configuration_2">Configuration</h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Name</th>
+<th class="tableblock halign-left valign-top">Type</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allowInsecureRegistries</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Are insecure registries allowed.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: false</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.allowInsecureRegistries</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">applicationLayersCache</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Where to cache application layers.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: ${project.build.directory}/arthur_jib_cache/application</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.applicationLayersCache</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">baseLayersCache</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Where to cache base layers layers (if any).</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: ${project.build.directory}/arthur_jib_cache/base</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.baseLayersCache</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">binarySource</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Where is the binary to include. It defaults on native-image output if done before in the same execution</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.binarySource</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">creationTimestamp</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Timestamp creation for the image, it is recommended to set it fixed for reproducibility.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: 1</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.creationTimestamp</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">enableCache</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Should base images be cached.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: true</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.enableCache</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">entrypoint</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Entry point to use.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: /${project.artifactId}</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.entrypoint</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">environment</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Map</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Image environment.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.environment</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">from</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Base image to use. Scratch will ensure it starts from an empty image.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: scratch</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.from</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">labels</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Map</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Image labels.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.labels</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">otherFiles</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Other files to include in the image, note that their permissions will not be executable.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.files</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ports</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Ports to expose.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.ports</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">programArguments</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">List</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Program arguments.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.programArguments</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">propertiesPrefix</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Once built, the binary path is set in maven properties.This enables to configure the prefix to use.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: arthur.</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.propertiesPrefix</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">serverId</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Alternate mojo to jib:build to avoid to bundle useless files.Can be replaced by vanilla jib when it will support it, see <a href="https://github.com/GoogleContainerTools/jib/issues/1857Server" class="bare">https://github.com/GoogleContainerTools/jib/issues/1857Server</a> identifier (in settings.xml) used to authenticate to the remote image registry.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: -</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.serverId</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">threads</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Number of threads used to build.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: 1</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.threads</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">timeout</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Build timeout in milliseconds if it is using threads &gt; 1.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: 3600000</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.timeout</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">to</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
+<p>Target image name.</p>
+</div>
+<div class="paragraph">
+<p><strong>Default value</strong>: ${project.artifactId}:${project.version}</p>
+</div>
+<div class="paragraph">
+<p><strong>User property</strong>: arthur.to</p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_advanced_example">Advanced example</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Just to give a real world configuration, here is how a simple JDBC application can be natified.
+It configure some resource bundle, setup h2 driver and exclude derby from the build classpath:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;plugin&gt;
+    &lt;groupId&gt;org.apache.geronimo.arthur&lt;/groupId&gt;
+    &lt;artifactId&gt;arthur-maven-plugin&lt;/artifactId&gt;
+    &lt;version&gt;${arthur.version}&lt;/version&gt;
+    &lt;configuration&gt;
+        &lt;main&gt;org.talend.components.jdbc.graalvm.MainTableNameInputEmitter&lt;/main&gt;
+        &lt;supportTestArtifacts&gt;true&lt;/supportTestArtifacts&gt; &lt;!-- for demo only --&gt;
+        &lt;initializeAtBuildTime&gt;
+            &lt;initializeAtBuildTime&gt;org.h2.Driver&lt;/initializeAtBuildTime&gt;
+            &lt;initializeAtBuildTime&gt;org.company.MyProxyInterface1&lt;/initializeAtBuildTime&gt;
+            &lt;initializeAtBuildTime&gt;org.company.MyProxyInterface2&lt;/initializeAtBuildTime&gt;
+        &lt;/initializeAtBuildTime&gt;
+        &lt;bundles&gt;
+            &lt;bundle&gt;
+                &lt;name&gt;org.company.MyProxyInterface1Messages&lt;/name&gt;
+            &lt;/bundle&gt;
+        &lt;/bundles&gt;
+        &lt;dynamicProxies&gt;
+          &lt;dynamicProxy&gt; &lt;!-- short notation --&gt;
+              &lt;classes&gt;org.company.MyProxyInterface1&lt;/classes&gt;
+          &lt;/dynamicProxy&gt;
+          &lt;dynamicProxy&gt;
+              &lt;classes&gt; &lt;!-- long notation --&gt;
+                  &lt;class&gt;org.company.MyProxyInterface2&lt;/class&gt;
+              &lt;/classes&gt;
+          &lt;/dynamicProxy&gt;
+        &lt;/dynamicProxies&gt;
+        &lt;excludedArtifacts&gt; &lt;!-- this setup uses supportTestArtifacts but we assume we don't want derby which is used in test dependencies --&gt;
+            &lt;excludedArtifact&gt;org.apache.derby:derby&lt;/excludedArtifact&gt;
+            &lt;excludedArtifact&gt;org.apache.derby:derbyclient&lt;/excludedArtifact&gt;
+            &lt;excludedArtifact&gt;org.apache.derby:derbynet&lt;/excludedArtifact&gt;
+        &lt;/excludedArtifacts&gt;
+    &lt;/configuration&gt;
+&lt;/plugin&gt;</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then you can just run <code>mvn arthur:native-image arthur:docker</code> to get a ready to deploy image.</p>
+</div>
+<hr>
+<div class="paragraph">
+<p>Previous: <a href="implementation.html">Arthur Implementation</a></p>
+</div>
+</div>
+</div></div>
+
+<div id="footer">
+    <div class="container">
+        Copyright &copy; 1999-2019 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+        Apache Geronimo, Geronimo, Apache, the Apache feather logo, and the Apache Geronimo project logo are trademarks
+        of
+        The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their
+        respective owners.
+    </div>
+</div>
+
+<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="js/arthur.js"></script>
+</body>
+</html>
\ No newline at end of file

Added: websites/production/geronimo/content/arthur/spi.html
==============================================================================
--- websites/production/geronimo/content/arthur/spi.html (added)
+++ websites/production/geronimo/content/arthur/spi.html Wed Oct 30 11:18:09 2019
@@ -0,0 +1,151 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8"/>
+    <title>Arthur SPI</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="Apache Geronimo Arthur Site">
+    <meta name="author" content="Apache">
+    <meta name="keywords" content="Apache Geronimo Arthur">
+    <meta name="generator" content="Arthur Site Generator">
+
+    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" rel="stylesheet"
+          integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous">
+    <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"
+          integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css"
+          integrity="sha256-IPtNBA1od/cGBfXTxYDxuT5+Y2BKy14o6j0FaIXDmYk=" crossorigin="anonymous"/>
+    <link href="https://stackpath.bootstrapcdn.com/bootswatch/4.3.1/flatly/bootstrap.min.css" rel="stylesheet"
+          integrity="sha384-T5jhQKMh96HMkXwqVMSjF3CmLcL1nT9//tCqu9By5XSdj7CwR0r+F3LTzUdfkkQf" crossorigin="anonymous">
+    <link rel="stylesheet" href="css/arthur.css"/>
+
+    <!--[if lt IE 9]>
+    <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 cz-shortcut-listen="true">
+
+<div class="navbar navbar-expand-lg fixed-top navbar-dark bg-primary">
+    <div class="container">
+        <a href="index.html" class="navbar-brand">Apache Geronimo Arthur</a>
+        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive"
+                aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
+            <span class="navbar-toggler-icon"></span>
+        </button>
+        <div class="collapse navbar-collapse" id="navbarResponsive">
+            <ul class="navbar-nav">
+                <li class="nav-item">
+                    <a class="nav-link" href="https://www.apache.org/">Apache</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="documentation.html">Documentation</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="community.html">Community</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="downloads.html">Downloads</a>
+                </li>
+                <li class="nav-item dropdown">
+                    <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" id="asf-links">ASF <span
+                            class="caret"></span></a>
+                    <div class="dropdown-menu" aria-labelledby="asf-links">
+                        <a class="dropdown-item" href="https://www.apache.org/licenses/">License</a>
+                        <a class="dropdown-item"
+                           href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
+                        <a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+                        <div class="dropdown-divider"></div>
+                        <a class="dropdown-item" href="https://www.apache.org/security/">Security</a>
+                    </div>
+                </li>
+            </ul>
+        </div>
+    </div>
+</div>
+
+<div class="container page-header"><div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Arthur SPI enables you to add custom logic to generate <code>native-image</code> configuration.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_dependencies">Dependencies</h2>
+<div class="sectionbody">
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;dependency&gt;
+  &lt;groupId&gt;${project.groupId}&lt;/groupId&gt;
+  &lt;artifactId&gt;arthur-spi&lt;/artifactId&gt;
+  &lt;version&gt;${project.version}&lt;/version&gt;
+&lt;/dependency&gt;</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_usage">Usage</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You must implement a <code>org.apache.geronimo.arthur.spi.ArthurExtension</code> and register it as a SPI (fully qualified name in <code>META-INF/services/org.apache.geronimo.arthur.spi.ArthurExtension</code>).
+This extension will have to implement <code>execute(Context)</code> method to register reflection, resource, &#8230;&#8203; metadata needed by <code>native-image</code> build.</p>
+</div>
+<div class="paragraph">
+<p>Here is an example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code class="language-java" data-lang="java">public class MyJaxbExtension implements ArthurExtension {
+
+    @Override
+    public void execute(final Context context) {
+        context.findAnnotatedClasses(XmlRootElement.class).stream()
+                .flatMap(clazz -&gt; createReflectionModel(clazz))
+                .forEach(context::register);
+    }
+
+    // createReflectionModel() just instantiate a ClassReflectionModel instance
+}</code></pre>
+</div>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+you can use <code>context.finder()</code> to find classes based on some annotation.
+</td>
+</tr>
+</table>
+</div>
+<hr>
+<div class="paragraph">
+<p>Previous: <a href="api.html">Arthur API</a> Next: <a href="implementation.html">Arthur Implementation</a></p>
+</div>
+</div>
+</div></div>
+
+<div id="footer">
+    <div class="container">
+        Copyright &copy; 1999-2019 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+        Apache Geronimo, Geronimo, Apache, the Apache feather logo, and the Apache Geronimo project logo are trademarks
+        of
+        The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their
+        respective owners.
+    </div>
+</div>
+
+<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="js/arthur.js"></script>
+</body>
+</html>
\ No newline at end of file



Mime
View raw message