You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by mm...@apache.org on 2019/11/07 18:29:15 UTC

[accumulo-website] branch asf-site updated: Jekyll build from master:aefbfd7

This is an automated email from the ASF dual-hosted git repository.

mmiller pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/accumulo-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 0b1e9b2  Jekyll build from master:aefbfd7
0b1e9b2 is described below

commit 0b1e9b2c9305b44b63c4c05cd355c1a8687bc1ee
Author: Mike Miller <mm...@apache.org>
AuthorDate: Thu Nov 7 13:26:54 2019 -0500

    Jekyll build from master:aefbfd7
    
    Checkstyle import control blog post. Fixes #149 (#206)
---
 api/index.html                                     |   2 +
 .../2019/11/04/checkstyle-import-control.html      | 116 +++++++++++++-----
 feed.xml                                           | 130 +++++++++++++++------
 index.html                                         |  14 +--
 news/index.html                                    |   7 ++
 redirects.json                                     |   2 +-
 search_data.json                                   |   8 ++
 7 files changed, 207 insertions(+), 72 deletions(-)

diff --git a/api/index.html b/api/index.html
index 23c687b..b06e035 100644
--- a/api/index.html
+++ b/api/index.html
@@ -178,6 +178,8 @@ for public API were relocated, and also altered to include the new MapReduce mod
 <pre><code class="language-regex">import\s+org\.apache\.accumulo\.(?!(core\.(client|data|security)|minicluster|hadoop)\.).*
 </code></pre>
 
+<p>See the <a href="/blog/2019/11/04/checkstyle-import-control.html">blog post</a> about using the checkstyle plugin for more explicit non-API detection.</p>
+
 
         </div>
 
diff --git a/api/index.html b/blog/2019/11/04/checkstyle-import-control.html
similarity index 51%
copy from api/index.html
copy to blog/2019/11/04/checkstyle-import-control.html
index 23c687b..718297f 100644
--- a/api/index.html
+++ b/blog/2019/11/04/checkstyle-import-control.html
@@ -25,7 +25,7 @@
 <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.css">
 <link href="/css/accumulo.css" rel="stylesheet" type="text/css">
 
-<title>Public API Definition</title>
+<title>Checking API use</title>
 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
@@ -138,46 +138,100 @@
         </div>
         <div id="content">
           
-          <h1 class="title">Public API Definition</h1>
+          <h1 class="title">Checking API use</h1>
           
-          <p>Accumulo’s public API is composed of all public types in the following
-packages and their sub-packages excluding those named <em>impl</em>, <em>thrift</em>, or
-<em>crypto</em>.</p>
+          <p>
 
-<ul>
-  <li><a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.0/org/apache/accumulo/core/client/package-summary.html">org.apache.accumulo.core.client</a></li>
-  <li><a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.0/org/apache/accumulo/core/data/package-summary.html">org.apache.accumulo.core.data</a></li>
-  <li><a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.0/org/apache/accumulo/core/security/package-summary.html">org.apache.accumulo.core.security</a></li>
-  <li><a href="https://static.javadoc.io/org.apache.accumulo/accumulo-minicluster/2.0.0/org/apache/accumulo/minicluster/package-summary.html">org.apache.accumulo.minicluster</a></li>
-  <li><a href="https://static.javadoc.io/org.apache.accumulo/accumulo-hadoop/2.0.0/org/apache/accumulo/hadoop/package-summary.html">org.apache.accumulo.hadoop</a> (since 2.0.0)</li>
-</ul>
+<b>Date: </b>&nbsp;&nbsp;04 Nov 2019<br>
 
-<p>A type is a class, interface, or enum. Anything with public or protected
-access in an API type is in the API. This includes, but is not limited to:
-methods, members classes, interfaces, and enums. Package-private types in the
-above packages are <em>not</em> considered public API.</p>
+</p>
 
-<p>The Accumulo project maintains binary compatibility across this API within a
-major release, as defined in the Java Language Specification 3rd ed. Starting
-with Accumulo 1.6.2 and 1.7.0 all API changes follow <a href="http://semver.org/spec/v2.0.0">semver 2.0</a>.
-Accumulo code outside of the defined API does not follow semver and may change
-in incompatible ways at any release.</p>
+<p>Accumulo follows <a href="https://semver.org/">SemVer</a> across versions with the declaration of a public API.  Code not in the public API should be
+considered unstable, at risk of changing between versions.  The public API packages are <a href="/api/">listed on the website</a>
+but may not be considered when an Accumulo user writes code.  This blog post explains how to make Maven
+automatically detect usage of Accumulo code outside the public API.</p>
 
-<p>The following regex matches imports that are <em>not</em> Accumulo public API. This
-regex can be used with <a href="http://checkstyle.sourceforge.net/config_regexp.html">RegexpSingleline</a> to automatically find suspicious
-imports in a project using Accumulo.</p>
+<p>The techniques described in this blog post only work for Accumulo 2.0 and later.  Do not use with 1.X versions.</p>
 
-<p>For 1.9 and earlier:</p>
+<h2 id="checkstyle-plugin">Checkstyle Plugin</h2>
 
-<pre><code class="language-regex">import\s+org\.apache\.accumulo\.(.*\.(impl|thrift|crypto)\..*|(?!(core\.(client|data|security)|minicluster)\.).*)
-</code></pre>
+<p>First add the checkstyle Maven plugin to your pom.</p>
 
-<p>For 2.0 and later, this can be simplified, because sub-packages not intended
-for public API were relocated, and also altered to include the new MapReduce module:</p>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;plugin&gt;</span>
+    <span class="c">&lt;!-- This was added to ensure project only uses Accumulo's public API --&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.maven.plugins<span class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>maven-checkstyle-plugin<span class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span>3.1.0<span class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;executions&gt;</span>
+      <span class="nt">&lt;execution&gt;</span>
+        <span class="nt">&lt;id&gt;</span>check-style<span class="nt">&lt;/id&gt;</span>
+        <span class="nt">&lt;goals&gt;</span>
+          <span class="nt">&lt;goal&gt;</span>check<span class="nt">&lt;/goal&gt;</span>
+        <span class="nt">&lt;/goals&gt;</span>
+        <span class="nt">&lt;configuration&gt;</span>
+          <span class="nt">&lt;configLocation&gt;</span>checkstyle.xml<span class="nt">&lt;/configLocation&gt;</span>
+        <span class="nt">&lt;/configuration&gt;</span>
+      <span class="nt">&lt;/execution&gt;</span>
+    <span class="nt">&lt;/executions&gt;</span>
+  <span class="nt">&lt;/plugin&gt;</span>
+</code></pre></div></div>
+<p>The plugin version is the latest at the time of this post.  For more information see the website for
+the <a href="https://maven.apache.org/plugins/maven-checkstyle-plugin/">Apache Maven Checkstyle Plugin</a>.  The configuration above adds the plugin to <code class="highlighter-rouge">check</code> execution goal
+so it will always run with your build.</p>
 
-<pre><code class="language-regex">import\s+org\.apache\.accumulo\.(?!(core\.(client|data|security)|minicluster|hadoop)\.).*
-</code></pre>
+<p>Create the configuration file specified above: <code class="highlighter-rouge">checkstyle.xml</code></p>
 
+<h3 id="checkstylexml">checkstyle.xml</h3>
+
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd"&gt;</span>
+<span class="nt">&lt;module</span> <span class="na">name=</span><span class="s">"Checker"</span><span class="nt">&gt;</span>
+  <span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"charset"</span> <span class="na">value=</span><span class="s">"UTF-8"</span><span class="nt">/&gt;</span>
+  <span class="nt">&lt;module</span> <span class="na">name=</span><span class="s">"TreeWalker"</span><span class="nt">&gt;</span>
+    <span class="c">&lt;!--check that only Accumulo public APIs are imported--&gt;</span>
+    <span class="nt">&lt;module</span> <span class="na">name=</span><span class="s">"ImportControl"</span><span class="nt">&gt;</span>
+      <span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"file"</span> <span class="na">value=</span><span class="s">"import-control.xml"</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;/module&gt;</span>
+  <span class="nt">&lt;/module&gt;</span>
+<span class="nt">&lt;/module&gt;</span>
+</code></pre></div></div>
+<p>This file sets up the ImportControl module.</p>
+
+<h2 id="import-control-configuration">Import Control Configuration</h2>
+
+<p>Create the second file specified above, <code class="highlighter-rouge">import-control.xml</code> and copy the configuration below.  Make sure to replace
+“insert-your-package-name” with the package name of your project.</p>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;!DOCTYPE import-control PUBLIC
+    "-//Checkstyle//DTD ImportControl Configuration 1.4//EN"
+    "https://checkstyle.org/dtds/import_control_1_4.dtd"&gt;</span>
+
+<span class="c">&lt;!-- This checkstyle rule is configured to ensure only use of Accumulo API --&gt;</span>
+<span class="nt">&lt;import-control</span> <span class="na">pkg=</span><span class="s">"insert-your-package-name"</span> <span class="na">strategyOnMismatch=</span><span class="s">"allowed"</span><span class="nt">&gt;</span>
+    <span class="c">&lt;!-- API packages --&gt;</span>
+    <span class="nt">&lt;allow</span> <span class="na">pkg=</span><span class="s">"org.apache.accumulo.core.client"</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;allow</span> <span class="na">pkg=</span><span class="s">"org.apache.accumulo.core.data"</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;allow</span> <span class="na">pkg=</span><span class="s">"org.apache.accumulo.core.security"</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;allow</span> <span class="na">pkg=</span><span class="s">"org.apache.accumulo.core.iterators"</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;allow</span> <span class="na">pkg=</span><span class="s">"org.apache.accumulo.minicluster"</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;allow</span> <span class="na">pkg=</span><span class="s">"org.apache.accumulo.hadoop.mapreduce"</span><span class="nt">/&gt;</span>
+
+    <span class="c">&lt;!-- disallow everything else coming from accumulo --&gt;</span>
+    <span class="nt">&lt;disallow</span> <span class="na">pkg=</span><span class="s">"org.apache.accumulo"</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/import-control&gt;</span>
+</code></pre></div></div>
+<p>This file configures the ImportControl module to only allow packages that are declared public API.</p>
+
+<h2 id="hold-the-line">Hold the line</h2>
+
+<p>Adding this to an existing project may expose usage of non public Accumulo API’s. It may take more time than is available
+to fix those at first, but do not let this discourage adding this plugin. One possible way to proceed is to allow the
+currently used non-public APIs in a commented section of import-control.xml noting these are temporarily allowed until
+they can be removed. This strategy prevents new usages of non-public APIs while allowing time to work on fixing the current
+ usages of non public APIs.  Also, if you don’t want your project failing to build because of this, you can add <code class="highlighter-rouge">&lt;failOnViolation&gt;false&lt;/failOnViolation&gt;</code>
+to the maven-checkstyle-plugin configuration.</p>
+
+
+
+<p><strong>View all posts in the <a href="/news">news archive</a></strong></p>
 
         </div>
 
diff --git a/feed.xml b/feed.xml
index f714b74..2ce1521 100644
--- a/feed.xml
+++ b/feed.xml
@@ -6,12 +6,107 @@
 </description>
     <link>https://accumulo.apache.org/</link>
     <atom:link href="https://accumulo.apache.org/feed.xml" rel="self" type="application/rss+xml"/>
-    <pubDate>Mon, 04 Nov 2019 13:41:25 -0500</pubDate>
-    <lastBuildDate>Mon, 04 Nov 2019 13:41:25 -0500</lastBuildDate>
+    <pubDate>Thu, 07 Nov 2019 13:26:50 -0500</pubDate>
+    <lastBuildDate>Thu, 07 Nov 2019 13:26:50 -0500</lastBuildDate>
     <generator>Jekyll v4.0.0</generator>
     
     
       <item>
+        <title>Checking API use</title>
+        <description>&lt;p&gt;Accumulo follows &lt;a href=&quot;https://semver.org/&quot;&gt;SemVer&lt;/a&gt; across versions with the declaration of a public API.  Code not in the public API should be
+considered unstable, at risk of changing between versions.  The public API packages are &lt;a href=&quot;/api/&quot;&gt;listed on the website&lt;/a&gt;
+but may not be considered when an Accumulo user writes code.  This blog post explains how to make Maven
+automatically detect usage of Accumulo code outside the public API.&lt;/p&gt;
+
+&lt;p&gt;The techniques described in this blog post only work for Accumulo 2.0 and later.  Do not use with 1.X versions.&lt;/p&gt;
+
+&lt;h2 id=&quot;checkstyle-plugin&quot;&gt;Checkstyle Plugin&lt;/h2&gt;
+
+&lt;p&gt;First add the checkstyle Maven plugin to your pom.&lt;/p&gt;
+
+&lt;div class=&quot;language-xml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;c&quot;&gt;&amp;lt;!-- This was added to ensure project only uses Accumulo's public API --&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.maven.plugins&lt;span class=&quot;nt&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;maven-checkstyle-plugin&lt;span class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;3.1.0&lt;span class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;executions&amp;gt;&lt;/span&gt;
+      &lt;span class=&quot;nt&quot;&gt;&amp;lt;execution&amp;gt;&lt;/span&gt;
+        &lt;span class=&quot;nt&quot;&gt;&amp;lt;id&amp;gt;&lt;/span&gt;check-style&lt;span class=&quot;nt&quot;&gt;&amp;lt;/id&amp;gt;&lt;/span&gt;
+        &lt;span class=&quot;nt&quot;&gt;&amp;lt;goals&amp;gt;&lt;/span&gt;
+          &lt;span class=&quot;nt&quot;&gt;&amp;lt;goal&amp;gt;&lt;/span&gt;check&lt;span class=&quot;nt&quot;&gt;&amp;lt;/goal&amp;gt;&lt;/span&gt;
+        &lt;span class=&quot;nt&quot;&gt;&amp;lt;/goals&amp;gt;&lt;/span&gt;
+        &lt;span class=&quot;nt&quot;&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;
+          &lt;span class=&quot;nt&quot;&gt;&amp;lt;configLocation&amp;gt;&lt;/span&gt;checkstyle.xml&lt;span class=&quot;nt&quot;&gt;&amp;lt;/configLocation&amp;gt;&lt;/span&gt;
+        &lt;span class=&quot;nt&quot;&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;
+      &lt;span class=&quot;nt&quot;&gt;&amp;lt;/execution&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/executions&amp;gt;&lt;/span&gt;
+  &lt;span class=&quot;nt&quot;&gt;&amp;lt;/plugin&amp;gt;&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
+&lt;p&gt;The plugin version is the latest at the time of this post.  For more information see the website for
+the &lt;a href=&quot;https://maven.apache.org/plugins/maven-checkstyle-plugin/&quot;&gt;Apache Maven Checkstyle Plugin&lt;/a&gt;.  The configuration above adds the plugin to &lt;code class=&quot;highlighter-rouge&quot;&gt;check&lt;/code&gt; execution goal
+so it will always run with your build.&lt;/p&gt;
+
+&lt;p&gt;Create the configuration file specified above: &lt;code class=&quot;highlighter-rouge&quot;&gt;checkstyle.xml&lt;/code&gt;&lt;/p&gt;
+
+&lt;h3 id=&quot;checkstylexml&quot;&gt;checkstyle.xml&lt;/h3&gt;
+
+&lt;div class=&quot;language-xml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;!DOCTYPE module PUBLIC &quot;-//Puppy Crawl//DTD Check Configuration 1.3//EN&quot; &quot;http://www.puppycrawl.com/dtds/configuration_1_3.dtd&quot;&amp;gt;&lt;/span&gt;
+&lt;span class=&quot;nt&quot;&gt;&amp;lt;module&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Checker&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
+  &lt;span class=&quot;nt&quot;&gt;&amp;lt;property&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;charset&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;value=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
+  &lt;span class=&quot;nt&quot;&gt;&amp;lt;module&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;TreeWalker&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;c&quot;&gt;&amp;lt;!--check that only Accumulo public APIs are imported--&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;module&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;ImportControl&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
+      &lt;span class=&quot;nt&quot;&gt;&amp;lt;property&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;file&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;value=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;import-control.xml&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/module&amp;gt;&lt;/span&gt;
+  &lt;span class=&quot;nt&quot;&gt;&amp;lt;/module&amp;gt;&lt;/span&gt;
+&lt;span class=&quot;nt&quot;&gt;&amp;lt;/module&amp;gt;&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
+&lt;p&gt;This file sets up the ImportControl module.&lt;/p&gt;
+
+&lt;h2 id=&quot;import-control-configuration&quot;&gt;Import Control Configuration&lt;/h2&gt;
+
+&lt;p&gt;Create the second file specified above, &lt;code class=&quot;highlighter-rouge&quot;&gt;import-control.xml&lt;/code&gt; and copy the configuration below.  Make sure to replace
+“insert-your-package-name” with the package name of your project.&lt;/p&gt;
+&lt;div class=&quot;language-xml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;!DOCTYPE import-control PUBLIC
+    &quot;-//Checkstyle//DTD ImportControl Configuration 1.4//EN&quot;
+    &quot;https://checkstyle.org/dtds/import_control_1_4.dtd&quot;&amp;gt;&lt;/span&gt;
+
+&lt;span class=&quot;c&quot;&gt;&amp;lt;!-- This checkstyle rule is configured to ensure only use of Accumulo API --&amp;gt;&lt;/span&gt;
+&lt;span class=&quot;nt&quot;&gt;&amp;lt;import-control&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;pkg=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;insert-your-package-name&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;strategyOnMismatch=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;allowed&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;c&quot;&gt;&amp;lt;!-- API packages --&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;allow&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;pkg=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;org.apache.accumulo.core.client&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;allow&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;pkg=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;org.apache.accumulo.core.data&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;allow&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;pkg=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;org.apache.accumulo.core.security&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;allow&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;pkg=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;org.apache.accumulo.core.iterators&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;allow&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;pkg=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;org.apache.accumulo.minicluster&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;allow&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;pkg=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;org.apache.accumulo.hadoop.mapreduce&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
+
+    &lt;span class=&quot;c&quot;&gt;&amp;lt;!-- disallow everything else coming from accumulo --&amp;gt;&lt;/span&gt;
+    &lt;span class=&quot;nt&quot;&gt;&amp;lt;disallow&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;pkg=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;org.apache.accumulo&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
+&lt;span class=&quot;nt&quot;&gt;&amp;lt;/import-control&amp;gt;&lt;/span&gt;
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
+&lt;p&gt;This file configures the ImportControl module to only allow packages that are declared public API.&lt;/p&gt;
+
+&lt;h2 id=&quot;hold-the-line&quot;&gt;Hold the line&lt;/h2&gt;
+
+&lt;p&gt;Adding this to an existing project may expose usage of non public Accumulo API’s. It may take more time than is available
+to fix those at first, but do not let this discourage adding this plugin. One possible way to proceed is to allow the
+currently used non-public APIs in a commented section of import-control.xml noting these are temporarily allowed until
+they can be removed. This strategy prevents new usages of non-public APIs while allowing time to work on fixing the current
+ usages of non public APIs.  Also, if you don’t want your project failing to build because of this, you can add &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;failOnViolation&amp;gt;false&amp;lt;/failOnViolation&amp;gt;&lt;/code&gt;
+to the maven-checkstyle-plugin configuration.&lt;/p&gt;
+
+</description>
+        <pubDate>Mon, 04 Nov 2019 00:00:00 -0500</pubDate>
+        <link>https://accumulo.apache.org/blog/2019/11/04/checkstyle-import-control.html</link>
+        <guid isPermaLink="true">https://accumulo.apache.org/blog/2019/11/04/checkstyle-import-control.html</guid>
+        
+        
+        <category>blog</category>
+        
+      </item>
+    
+      <item>
         <title>Using Azure Data Lake Gen2 storage as a data store for Accumulo</title>
         <description>&lt;p&gt;Accumulo can store its files in &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-introduction&quot;&gt;Azure Data Lake Storage Gen2&lt;/a&gt;
 using the &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-abfs-driver&quot;&gt;ABFS (Azure Blob File System)&lt;/a&gt; driver.
@@ -1226,36 +1321,5 @@ complete in this alpha release.&lt;/li&gt;
         
       </item>
     
-      <item>
-        <title>Apache Accumulo 2.0.0-alpha-1</title>
-        <description>&lt;p&gt;Apache Accumulo 2.0.0-alpha-1 contains numerous changes since the 1.9. This
-alpha release is a preview of features coming in 2.0.0. It is being made
-available for preview, testing, and evaluation of those upcoming features, but
-is &lt;em&gt;not yet suitable for production use&lt;/em&gt;. API, packaging, and other changes may
-still occur before a final 2.0.0 release.&lt;/p&gt;
-
-&lt;ul&gt;
-  &lt;li&gt;&lt;a href=&quot;/docs/2.x/&quot;&gt;User Manual&lt;/a&gt; - In-depth developer and administrator documentation&lt;/li&gt;
-  &lt;li&gt;&lt;a href=&quot;/docs/2.x/apidocs/&quot;&gt;Javadocs&lt;/a&gt; - Accumulo 2.0 API (subject to change)&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;h2 id=&quot;notable-changes&quot;&gt;Notable Changes&lt;/h2&gt;
-
-&lt;ul&gt;
-  &lt;li&gt;Please see the &lt;a href=&quot;/release/accumulo-2.0.0&quot;&gt;draft release notes for 2.0.0&lt;/a&gt; for a list of the
-changes coming in 2.0.0, many of which are either complete, or nearly
-complete in this alpha release.&lt;/li&gt;
-&lt;/ul&gt;
-
-</description>
-        <pubDate>Sun, 14 Oct 2018 00:00:00 -0400</pubDate>
-        <link>https://accumulo.apache.org/release/accumulo-2.0.0-alpha-1/</link>
-        <guid isPermaLink="true">https://accumulo.apache.org/release/accumulo-2.0.0-alpha-1/</guid>
-        
-        
-        <category>release</category>
-        
-      </item>
-    
   </channel>
 </rss>
diff --git a/index.html b/index.html
index 756ac21..d2d6818 100644
--- a/index.html
+++ b/index.html
@@ -179,6 +179,13 @@
         
         <div class="row latest-news-item">
           <div class="col-sm-12" style="margin-bottom: 5px">
+           <span style="font-size: 12px; margin-right: 5px;">Nov 2019</span>
+           <a href="/blog/2019/11/04/checkstyle-import-control.html">Checking API use</a>
+          </div>
+        </div>
+        
+        <div class="row latest-news-item">
+          <div class="col-sm-12" style="margin-bottom: 5px">
            <span style="font-size: 12px; margin-right: 5px;">Oct 2019</span>
            <a href="/blog/2019/10/15/accumulo-adlsgen2-notes.html">Using Azure Data Lake Gen2 storage as a data store for Accumulo</a>
           </div>
@@ -205,13 +212,6 @@
           </div>
         </div>
         
-        <div class="row latest-news-item">
-          <div class="col-sm-12" style="margin-bottom: 5px">
-           <span style="font-size: 12px; margin-right: 5px;">Aug 2019</span>
-           <a href="/release/accumulo-2.0.0/">Apache Accumulo 2.0.0</a>
-          </div>
-        </div>
-        
         <div id="news-archive-link">
          <p>View all posts in the <a href="/news">news archive</a></p>
         </div>
diff --git a/news/index.html b/news/index.html
index c304dea..a548889 100644
--- a/news/index.html
+++ b/news/index.html
@@ -148,6 +148,13 @@
   
   
   <div class="row" style="margin-top: 15px">
+    <div class="col-md-1">Nov 04</div>
+    <div class="col-md-10"><a href="/blog/2019/11/04/checkstyle-import-control.html">Checking API use</a></div>
+  </div>
+
+  
+  
+  <div class="row" style="margin-top: 15px">
     <div class="col-md-1">Oct 15</div>
     <div class="col-md-10"><a href="/blog/2019/10/15/accumulo-adlsgen2-notes.html">Using Azure Data Lake Gen2 storage as a data store for Accumulo</a></div>
   </div>
diff --git a/redirects.json b/redirects.json
index 4bda3a4..6e10199 100644
--- a/redirects.json
+++ b/redirects.json
@@ -1 +1 @@
-{"/release_notes/1.5.1.html":"https://accumulo.apache.org/release/accumulo-1.5.1/","/release_notes/1.6.0.html":"https://accumulo.apache.org/release/accumulo-1.6.0/","/release_notes/1.6.1.html":"https://accumulo.apache.org/release/accumulo-1.6.1/","/release_notes/1.6.2.html":"https://accumulo.apache.org/release/accumulo-1.6.2/","/release_notes/1.7.0.html":"https://accumulo.apache.org/release/accumulo-1.7.0/","/release_notes/1.5.3.html":"https://accumulo.apache.org/release/accumulo-1.5.3/" [...]
\ No newline at end of file
+{"/release_notes/1.5.1.html":"https://accumulo.apache.org/release/accumulo-1.5.1/","/release_notes/1.6.0.html":"https://accumulo.apache.org/release/accumulo-1.6.0/","/release_notes/1.6.1.html":"https://accumulo.apache.org/release/accumulo-1.6.1/","/release_notes/1.6.2.html":"https://accumulo.apache.org/release/accumulo-1.6.2/","/release_notes/1.7.0.html":"https://accumulo.apache.org/release/accumulo-1.7.0/","/release_notes/1.5.3.html":"https://accumulo.apache.org/release/accumulo-1.5.3/" [...]
\ No newline at end of file
diff --git a/search_data.json b/search_data.json
index 72bed5e..7f4e9e4 100644
--- a/search_data.json
+++ b/search_data.json
@@ -295,6 +295,14 @@
     },
   
   
+    "blog-2019-11-04-checkstyle-import-control-html": {
+      "title": "Checking API use",
+      "content"	 : "Accumulo follows SemVer across versions with the declaration of a public API.  Code not in the public API should beconsidered unstable, at risk of changing between versions.  The public API packages are listed on the websitebut may not be considered when an Accumulo user writes code.  This blog post explains how to make Mavenautomatically detect usage of Accumulo code outside the public API.The techniques described in this blog post only work for Accumulo 2.0 and late [...]
+      "url": " /blog/2019/11/04/checkstyle-import-control.html",
+      "categories": "blog"
+    }
+    ,
+  
     "blog-2019-10-15-accumulo-adlsgen2-notes-html": {
       "title": "Using Azure Data Lake Gen2 storage as a data store for Accumulo",
       "content"	 : "Accumulo can store its files in Azure Data Lake Storage Gen2using the ABFS (Azure Blob File System) driver.Similar to S3 blog, the write ahead logs &amp;amp; Accumulo metadata can be stored in HDFS and everything else on Gen2 storageusing the volume chooser feature introduced in Accumulo 2.0. The configurations referred on this blogare specific to Accumulo 2.0 and Hadoop 3.2.0.Hadoop setupFor ABFS client to talk to Gen2 storage, it requires one of the Authentication m [...]