<p dir="auto"><a href="https://elasticsearch-ci.elastic.co/job/elastic+elasticsearch+master+java9-periodic/256/consoleText" rel="nofollow">https://elasticsearch-ci.elastic.co/job/elastic+elasticsearch+master+java9-periodic/256/consoleText</a></p>
<p dir="auto">This looks like a fairly minimal reproduction:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="    public void testAppendStringIntoMap() {
        assertEquals(&quot;nullcat&quot;, exec(&quot;def a = new HashMap(); a.cat += 'cat'&quot;));
    }"><pre class="notranslate"><code class="notranslate">    public void testAppendStringIntoMap() {
        assertEquals("nullcat", exec("def a = new HashMap(); a.cat += 'cat'"));
    }
</code></pre></div>
<p dir="auto">I'm not super familiar with this code. Does someone else want it or should I grab it?</p>
<p dir="auto">Right now Elasticsearch plugins that want ship scripts have to deal with locating the configuration of Elasticsearch so they can run properly. On the other hand in 5.0 Elasticsearch will ship the <code class="notranslate">elasticsearch-plugin</code> command that already does this. If we could allow plugins to register <code class="notranslate">subcommands</code> of <code class="notranslate">elasticsearch-plugin</code> then they wouldn't need to duplicate all that effort.</p>
<p dir="auto">We certainly could improve support for plugins shipping their own shell and batch scripts but I'm not really a fan of writing more and more and more batch scripts, most of which just figure out where the Elasticsearch code is and then start java.</p>