<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.1 from src/site/markdown/index.md.vm
 | Rendered using Apache Maven Fluido Skin 1.8
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.9.1" />
    <title>Apache Accumulo Maven Plugin &#x2013; Description</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.8.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
    <script src="./js/apache-maven-fluido-1.8.min.js"></script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <header>
        <div id="banner">
          <div class="pull-left"><div id="bannerLeft"><h2>Apache Accumulo Maven Plugin</h2>
</div>
</div>
          <div class="pull-right"></div>
          <div class="clear"><hr/></div>
        </div>

        <div id="breadcrumbs">
          <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2019-08-07<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.0.0</li>
          </ul>
        </div>
      </header>
      <div class="row-fluid">
        <header id="leftColumn" class="span2">
          <nav class="well sidebar-nav">
  <ul class="nav nav-list">
   <li class="nav-header">Overview</li>
    <li><a href="../" title="Accumulo Home"><span class="none"></span>Accumulo Home</a></li>
    <li class="active"><a href="#"><span class="none"></span>Introduction</a></li>
    <li><a href="plugin-info.html" title="Goals"><span class="none"></span>Goals</a></li>
   <li class="nav-header">Project Documentation</li>
    <li><a href="project-info.html" title="Project Information"><span class="icon-chevron-down"></span>Project Information</a>
     <ul class="nav nav-list">
      <li><a href="ci-management.html" title="CI Management"><span class="none"></span>CI Management</a></li>
      <li><a href="dependencies.html" title="Dependencies"><span class="none"></span>Dependencies</a></li>
      <li><a href="dependency-info.html" title="Dependency Information"><span class="none"></span>Dependency Information</a></li>
      <li><a href="distribution-management.html" title="Distribution Management"><span class="none"></span>Distribution Management</a></li>
      <li class="active"><a href="#"><span class="none"></span>About</a></li>
      <li><a href="issue-management.html" title="Issue Management"><span class="none"></span>Issue Management</a></li>
      <li><a href="licenses.html" title="Licenses"><span class="none"></span>Licenses</a></li>
      <li><a href="mailing-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a></li>
      <li><a href="plugin-management.html" title="Plugin Management"><span class="none"></span>Plugin Management</a></li>
      <li><a href="plugins.html" title="Plugins"><span class="none"></span>Plugins</a></li>
      <li><a href="scm.html" title="Source Code Management"><span class="none"></span>Source Code Management</a></li>
      <li><a href="summary.html" title="Summary"><span class="none"></span>Summary</a></li>
     </ul></li>
    <li><a href="project-reports.html" title="Project Reports"><span class="icon-chevron-right"></span>Project Reports</a></li>
  </ul>
          </nav>
          <div class="well sidebar-nav">
            <hr />
            <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
            </div>
          </div>
        </header>
        <main id="bodyColumn"  class="span10" >
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<section>
<h2><a name="Description"></a>Description</h2>
<p>This accumulo2-maven-plugin allows your Maven project to run a mini, single node instance of Apache Accumulo 2.x in order for you to run your project&#x2019;s integration tests against a live version of Accumulo.</p>
<p>This version of the plugin uses accumulo-minicluster-2.0.0. This version <a class="externalLink" href="https://blog.sonatype.com/2008/04/how-to-override-a-plugins-dependency-in-maven/">can be overridden similar to overriding checkstyle versions</a> by a later 2.x version. Because Accumulo follows <a class="externalLink" href="https://semver.org/spec/v2.0.0.html">Semantic Versioning</a>, and this plugin limits itself to using only public API, this should work if you meet the dependency requirements of that version (accumulo-minicluster-2.1.0 will require Java 11, for example).</p></section><section>
<h2><a name="Getting_Started"></a>Getting Started</h2>
<p>To add this plugin to your project, configure the plugin similarly to:</p>

<div>
<div>
<pre class="source">  &lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.accumulo&lt;/groupId&gt;
        &lt;artifactId&gt;accumulo2-maven-plugin&lt;/artifactId&gt;
        &lt;version&gt;1.0.0&lt;/version&gt;
        &lt;configuration&gt;
          &lt;instanceName&gt;it-instance-maven&lt;/instanceName&gt;
          &lt;rootPassword&gt;ITSecret&lt;/rootPassword&gt;
        &lt;/configuration&gt;
        &lt;executions&gt;
          &lt;execution&gt;
            &lt;id&gt;run-plugin&lt;/id&gt;
            &lt;goals&gt;
              &lt;goal&gt;start&lt;/goal&gt;
              &lt;goal&gt;stop&lt;/goal&gt;
            &lt;/goals&gt;
          &lt;/execution&gt;
        &lt;/executions&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
</pre></div></div>

<p>and build your project, similarly to:</p>

<div>
<div>
<pre class="source">mvn verify
</pre></div></div>

<p>The start goal typically runs at the pre-integration-test phase, and the stop goal typically runs at the post-integration-test phase of the <a class="externalLink" href="https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html">Maven lifecycle</a>, so your project will have access to the running Accumulo instance during the integration-test phase to perform its integration tests.</p></section>
        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &#169;      2013&#x2013;2019<a href="https://www.apache.org">The Apache Software Foundation</a>.
.</p>
        </div>
      </div>
    </footer>
  </body>
</html>
