Merge pull request #9 from apache/dependabot/maven/parent/junit-junit-4.13.1

Bump junit from 4.12 to 4.13.1 in /parent
diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 0000000..477f9f4
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+github:
+  description: "Apache Commons Weaver"
+  homepage: https://commons.apache.org/weaver/
+
+notifications:
+    commits:      commits@commons.apache.org
+    issues:       issues@commons.apache.org
+    pullrequests: issues@commons.apache.org
+    jira_options: link label
+    jobs:         notifications@commons.apache.org
+    issues_bot_dependabot: notifications@commons.apache.org
+    pullrequests_bot_dependabot: notifications@commons.apache.org
+    issues_bot_codecov-commenter: notifications@commons.apache.org
+    pullrequests_bot_codecov-commenter: notifications@commons.apache.org
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
new file mode 100644
index 0000000..7d2b97e
--- /dev/null
+++ b/.github/workflows/maven.yml
@@ -0,0 +1,61 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+name: Java CI
+
+on: [push, pull_request, workflow_dispatch]
+
+permissions:
+  contents: read
+
+jobs:
+  build:
+    timeout-minutes: 7
+    continue-on-error: ${{ matrix.experimental }}
+    strategy:
+      matrix:
+        java: [ 8, 11, 17 ]
+        os: [ubuntu-latest]
+        experimental: [false]
+        # Don't need 
+        include:
+          - java: 8
+            os: macos-latest
+            experimental: false
+          - java: 8
+            os: windows-latest
+            experimental: false
+#        include:
+#          - java: 18-ea
+#            experimental: true        
+
+    runs-on: ${{ matrix.os }}
+    steps:
+    - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
+      with:
+        persist-credentials: false
+    - uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
+      with:
+        path: ~/.m2/repository
+        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+        restore-keys: |
+          ${{ runner.os }}-maven-
+    - name: Set up JDK ${{ matrix.java }}
+      uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0
+      with:
+        distribution: 'temurin'
+        java-version: ${{ matrix.java }}
+    - name: Build with Maven
+      run: mvn --show-version --batch-mode --no-transfer-progress
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 45d33a8..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more

-# contributor license agreements.  See the NOTICE file distributed with

-# this work for additional information regarding copyright ownership.

-# The ASF licenses this file to You 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.

-

-language: java

-sudo: false

-

-jdk:

-  - openjdk8

-  - openjdk11

-

-after_success:

-  - mvn clean cobertura:cobertura coveralls:report

diff --git a/NOTICE.txt b/NOTICE.txt
index ac92d31..82ab1e7 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -1,5 +1,5 @@
 Apache Commons Weaver
-Copyright 2012-2019 The Apache Software Foundation
+Copyright 2012-2024 The Apache Software Foundation
 
 This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
+The Apache Software Foundation (https://www.apache.org/).
diff --git a/README.md b/README.md
index 4862a86..7bce11e 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@
  | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
  +======================================================================+
  |                                                                      |
- | 1) Re-generate using: mvn commons:readme-md                          |
+ | 1) Re-generate using: mvn commons-build:readme-md                    |
  |                                                                      |
  | 2) Set the following properties in the component's pom:              |
  |    - commons.componentid (required, alphabetic, lower case)          |
@@ -43,8 +43,7 @@
 Apache Commons Weaver
 ===================
 
-[![Build Status](https://travis-ci.org/apache/commons-weaver.svg)](https://travis-ci.org/apache/commons-weaver)
-[![Coverage Status](https://codecov.io/gh/apache/commons-weaver/branch/master/graph/badge.svg)](https://app.codecov.io/gh/apache/commons-weaver)
+[![Java CI](https://github.com/apache/commons-weaver/actions/workflows/maven.yml/badge.svg)](https://github.com/apache/commons-weaver/actions/workflows/maven.yml)
 [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.commons/commons-weaver-base/badge.svg?gav=true)](https://maven-badges.herokuapp.com/maven-central/org.apache.commons/commons-weaver-base/?gav=true)
 [![Javadocs](https://javadoc.io/badge/org.apache.commons/commons-weaver-base/2.0.svg)](https://javadoc.io/doc/org.apache.commons/commons-weaver-base/2.0)
 
@@ -56,13 +55,13 @@
 
 More information can be found on the [Apache Commons Weaver homepage](https://commons.apache.org/proper/commons-weaver).
 The [Javadoc](https://commons.apache.org/proper/commons-weaver/javadocs/api-release) can be browsed.
-Questions related to the usage of Apache Commons Weaver should be posted to the [user mailing list][ml].
+Questions related to the usage of Apache Commons Weaver should be posted to the [user mailing list](https://commons.apache.org/mail-lists.html).
 
 Where can I get the latest release?
 -----------------------------------
 You can download source and binaries from our [download page](https://commons.apache.org/proper/commons-weaver/download_weaver.cgi).
 
-Alternatively you can pull it from the central Maven repositories:
+Alternatively, you can pull it from the central Maven repositories:
 
 ```xml
 <dependency>
@@ -72,35 +71,47 @@
 </dependency>
 ```
 
+Building
+--------
+
+Building requires a Java JDK and [Apache Maven](https://maven.apache.org/). 
+The required Java version is found in the `pom.xml` as the `maven.compiler.source` property.
+
+From a command shell, run `mvn` without arguments to invoke the default Maven goal to run all tests and checks.
+
 Contributing
 ------------
 
-We accept Pull Requests via GitHub. The [developer mailing list][ml] is the main channel of communication for contributors.
+We accept Pull Requests via GitHub. The [developer mailing list](https://commons.apache.org/mail-lists.html) is the main channel of communication for contributors.
 There are some guidelines which will make applying PRs easier for us:
 + No tabs! Please use spaces for indentation.
-+ Respect the code style.
++ Respect the existing code style for each file.
 + Create minimal diffs - disable on save actions like reformat source code or organize imports. If you feel the source code should be reformatted create a separate PR for this change.
-+ Provide JUnit tests for your changes and make sure your changes don't break any existing tests by running ```mvn clean test```.
++ Provide JUnit tests for your changes and make sure your changes don't break any existing tests by running ```mvn```.
 
 If you plan to contribute on a regular basis, please consider filing a [contributor license agreement](https://www.apache.org/licenses/#clas).
 You can learn more about contributing via GitHub in our [contribution guidelines](CONTRIBUTING.md).
 
 License
 -------
-This code is under the [Apache Licence v2](https://www.apache.org/licenses/LICENSE-2.0).
+This code is licensed under the [Apache License v2](https://www.apache.org/licenses/LICENSE-2.0).
 
 See the `NOTICE.txt` file for required notices and attributions.
 
-Donations
----------
-You like Apache Commons Weaver? Then [donate back to the ASF](https://www.apache.org/foundation/contributing.html) to support the development.
+Donating
+--------
+You like Apache Commons Weaver? Then [donate back to the ASF](https://www.apache.org/foundation/contributing.html) to support development.
 
 Additional Resources
 --------------------
 
 + [Apache Commons Homepage](https://commons.apache.org/)
 + [Apache Issue Tracker (JIRA)](https://issues.apache.org/jira/browse/WEAVER)
++ [Apache Commons Slack Channel](https://the-asf.slack.com/archives/C60NVB8AD)
 + [Apache Commons Twitter Account](https://twitter.com/ApacheCommons)
 + `#apache-commons` IRC channel on `irc.freenode.org`
 
-[ml]:https://commons.apache.org/mail-lists.html
+Apache Commons Components
+-------------------------
+
+Please see the [list of components](https://commons.apache.org/components.html)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index af7f898..7568f94 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -6,7 +6,7 @@
 Apache Commons Weaver provides an easy way to enhance compiled Java
 classes by generating ("weaving") bytecode into those classes.
 
-Requires Java 8 or greater.
+Requires Java 8 or above.
 
 Changes in this version include:
 
@@ -30,6 +30,6 @@
 Historical list of changes: https://commons.apache.org/proper/commons-weaver/changes-report.html
 
 For complete information on Apache Commons Weaver, including instructions on how to submit bug reports,
-patches, or suggestions for improvement, see the Apache Apache Commons Weaver website:
+patches, or suggestions for improvement, see the Apache Commons Weaver website:
 
 https://commons.apache.org/proper/commons-weaver
diff --git a/ant/src/main/java/org/apache/commons/weaver/ant/AbstractWeaverTask.java b/ant/src/main/java/org/apache/commons/weaver/ant/AbstractWeaverTask.java
index 101a2d2..cf63d89 100644
--- a/ant/src/main/java/org/apache/commons/weaver/ant/AbstractWeaverTask.java
+++ b/ant/src/main/java/org/apache/commons/weaver/ant/AbstractWeaverTask.java
@@ -49,7 +49,7 @@
     }
 
     /**
-     * Get the {@link WeaverSettings} in use.
+     * Gets the {@link WeaverSettings} in use.
      * @return {@link WeaverSettings}
      */
     public WeaverSettings getSettings() {
@@ -57,7 +57,7 @@
     }
 
     /**
-     * Set a project reference to a {@link WeaverSettings} object.
+     * Sets a project reference to a {@link WeaverSettings} object.
      * @param refid key
      */
     public void setSettingsRef(final String refid) {
diff --git a/ant/src/main/java/org/apache/commons/weaver/ant/WeaverSettings.java b/ant/src/main/java/org/apache/commons/weaver/ant/WeaverSettings.java
index 39d9ed1..ab6017d 100644
--- a/ant/src/main/java/org/apache/commons/weaver/ant/WeaverSettings.java
+++ b/ant/src/main/java/org/apache/commons/weaver/ant/WeaverSettings.java
@@ -63,7 +63,7 @@
     }
 
     /**
-     * Get the {@code target} directory.
+     * Gets the {@code target} directory.
      * @return {@link File}
      */
     public File getTarget() {
@@ -74,7 +74,7 @@
     }
 
     /**
-     * Set the {@code target} directory.
+     * Sets the {@code target} directory.
      * @param target {@link File}
      */
     public void setTarget(final File target) {
@@ -85,7 +85,7 @@
     }
 
     /**
-     * Get the {@code classpathref}.
+     * Gets the {@code classpathref}.
      * @return {@link String}
      */
     public String getClasspathref() {
@@ -96,7 +96,7 @@
     }
 
     /**
-     * Set the {@code classpathref}.
+     * Sets the {@code classpathref}.
      * @param classpathref {@link String}
      */
     public void setClasspathRef(final String classpathref) {
@@ -124,7 +124,7 @@
     }
 
     /**
-     * Get the {@code classpath}.
+     * Gets the {@code classpath}.
      * @return {@link Path}
      */
     public Path getClasspath() {
@@ -144,7 +144,7 @@
     }
 
     /**
-     * Set the {@code classpath}.
+     * Sets the {@code classpath}.
      * @param classpath {@link Path}
      */
     public void setClasspath(final Path classpath) {
@@ -189,7 +189,7 @@
     }
 
     /**
-     * Set whether to include the system classpath.
+     * Sets whether to include the system classpath.
      * @param includeSystemClasspath the includeSystemClasspath to set
      * @since 1.3
      * @see Path#systemClasspath
diff --git a/ant/src/main/java/org/apache/commons/weaver/ant/package-info.java b/ant/src/main/java/org/apache/commons/weaver/ant/package-info.java
index 6b523c4..b935f05 100644
--- a/ant/src/main/java/org/apache/commons/weaver/ant/package-info.java
+++ b/ant/src/main/java/org/apache/commons/weaver/ant/package-info.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 /**
  * Integration with Apache Ant.
  */
diff --git a/dist/src/assembly/bin.xml b/dist/src/assembly/bin.xml
index 26e1932..c1f8e63 100644
--- a/dist/src/assembly/bin.xml
+++ b/dist/src/assembly/bin.xml
@@ -14,7 +14,9 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-<assembly>
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.2.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.2.0 http://maven.apache.org/xsd/assembly-2.2.0.xsd">
   <id>bin</id>
   <formats>
     <format>tar.gz</format>
diff --git a/dist/src/assembly/src.xml b/dist/src/assembly/src.xml
index ab83964..015d5f5 100644
--- a/dist/src/assembly/src.xml
+++ b/dist/src/assembly/src.xml
@@ -14,7 +14,9 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-<assembly>
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.2.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.2.0 http://maven.apache.org/xsd/assembly-2.2.0.xsd">
   <id>src</id>
   <formats>
     <format>tar.gz</format>
diff --git a/maven-plugin/pom.xml b/maven-plugin/pom.xml
index f10f9d0..29fbe6e 100644
--- a/maven-plugin/pom.xml
+++ b/maven-plugin/pom.xml
@@ -34,7 +34,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.version>3.1.0</maven.version>
+    <maven.version>3.8.1</maven.version>
     <maven.plugin.version>3.5.2</maven.plugin.version>
     <aether.version>1.1.0</aether.version>
   </properties>
diff --git a/maven-plugin/src/main/java/org/apache/commons/weaver/maven/AbstractCWMojo.java b/maven-plugin/src/main/java/org/apache/commons/weaver/maven/AbstractCWMojo.java
index a7131a7..a349a57 100755
--- a/maven-plugin/src/main/java/org/apache/commons/weaver/maven/AbstractCWMojo.java
+++ b/maven-plugin/src/main/java/org/apache/commons/weaver/maven/AbstractCWMojo.java
@@ -81,7 +81,7 @@
     protected RepositorySystemSession repositorySystemSession;
 
     /**
-     * Get the target directory for this prepare mojo.
+     * Gets the target directory for this prepare mojo.
      *
      * @return {@link File}
      */
diff --git a/maven-plugin/src/main/java/org/apache/commons/weaver/maven/package-info.java b/maven-plugin/src/main/java/org/apache/commons/weaver/maven/package-info.java
index 3c78c52..e6f93d3 100644
--- a/maven-plugin/src/main/java/org/apache/commons/weaver/maven/package-info.java
+++ b/maven-plugin/src/main/java/org/apache/commons/weaver/maven/package-info.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 /**
  * Integration with Apache Maven.
  */
diff --git a/modules/normalizer/pom.xml b/modules/normalizer/pom.xml
index b2ceef2..8e7a6d4 100644
--- a/modules/normalizer/pom.xml
+++ b/modules/normalizer/pom.xml
@@ -43,6 +43,12 @@
       <scope>provided</scope>
     </dependency>
     <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <version>5.9.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>org.ow2.asm</groupId>
       <artifactId>asm</artifactId>
     </dependency>
diff --git a/modules/normalizer/src/main/java/org/apache/commons/weaver/normalizer/Normalizer.java b/modules/normalizer/src/main/java/org/apache/commons/weaver/normalizer/Normalizer.java
index b0570c9..508e232 100644
--- a/modules/normalizer/src/main/java/org/apache/commons/weaver/normalizer/Normalizer.java
+++ b/modules/normalizer/src/main/java/org/apache/commons/weaver/normalizer/Normalizer.java
@@ -372,7 +372,7 @@
     /**
      * Map a set of classes by their enclosing class.
      * @param sort values
-     * @return {@link Map} of enclosing classname to {@link Map} of internal name to {@link ClassWrapper}
+     * @return {@link Map} of enclosing class name to {@link Map} of internal name to {@link ClassWrapper}
      */
     private Map<String, Map<String, ClassWrapper>> byEnclosingClass(final Set<ClassWrapper> sort) {
         final Map<String, Map<String, ClassWrapper>> result = new HashMap<>();
@@ -502,9 +502,9 @@
      * Create the normalized version of a given class in the configured target package. The {@link Normalizer} will
      * gladly do so in a package from which the normalized class will not actually be able to reference any types upon
      * which it relies; in such a situation you must specify the target package as the package of the supertype.
-     * @param key used to generate the normalized classname.
+     * @param key used to generate the normalized class name.
      * @param classWrapper
-     * @return the generated classname.
+     * @return the generated class name.
      * @throws IOException
      */
     private String copy(final Pair<String, String> key, final ClassWrapper classWrapper) throws IOException {
diff --git a/modules/normalizer/src/main/java/org/apache/commons/weaver/normalizer/package-info.java b/modules/normalizer/src/main/java/org/apache/commons/weaver/normalizer/package-info.java
index 6af0f40..f16d2b8 100644
--- a/modules/normalizer/src/main/java/org/apache/commons/weaver/normalizer/package-info.java
+++ b/modules/normalizer/src/main/java/org/apache/commons/weaver/normalizer/package-info.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 /**
  * Implements the Normalizer weaver, whose purpose is to collapse identical
  * anonymous class definitions into a single one.
diff --git a/modules/normalizer/src/test/java/org/apache/commons/weaver/normalizer/UtilsTest.java b/modules/normalizer/src/test/java/org/apache/commons/weaver/normalizer/UtilsTest.java
index 2d8227b..3737793 100644
--- a/modules/normalizer/src/test/java/org/apache/commons/weaver/normalizer/UtilsTest.java
+++ b/modules/normalizer/src/test/java/org/apache/commons/weaver/normalizer/UtilsTest.java
@@ -19,13 +19,16 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.util.Iterator;
 import java.util.Map;
 
 import org.junit.Test;
+import org.junit.jupiter.api.function.Executable;
 
 public class UtilsTest {
+
     @Test
     public void testValidatePackageName() {
         assertEquals("", Utils.validatePackageName(""));
@@ -42,14 +45,14 @@
         assertEquals("foo2", Utils.validatePackageName("foo2"));
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testValidatePackageNameStartsWithDigit() {
-        Utils.validatePackageName("2foo");
+        assertThrows(IllegalArgumentException.class, () -> Utils.validatePackageName("2foo"));
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testValidatePackageNameEmbeddedWhitespace() {
-        Utils.validatePackageName("foo bar");
+        assertThrows(IllegalArgumentException.class, () -> Utils.validatePackageName("foo bar"));
     }
 
     @Test
@@ -69,24 +72,24 @@
             Number.class, String.class, Map.class);
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testParseUnknownType() {
-        Utils.parseTypes("gobbledygook", getClass().getClassLoader());
+        assertThrows(IllegalArgumentException.class, () -> Utils.parseTypes("gobbledygook", getClass().getClassLoader()));
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testParseMissingFirstType() {
-        Utils.parseTypes(",java.lang.Object", getClass().getClassLoader());
+        assertThrows(IllegalArgumentException.class, () -> Utils.parseTypes(",java.lang.Object", getClass().getClassLoader()));
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testParseMissingLastType() {
-        Utils.parseTypes("java.lang.Object,", getClass().getClassLoader());
+        assertThrows(IllegalArgumentException.class, () -> Utils.parseTypes("java.lang.Object,", getClass().getClassLoader()));
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testParseMissingType() {
-        Utils.parseTypes("java.lang.Object,,java.lang.Iterable", getClass().getClassLoader());
+        assertThrows(IllegalArgumentException.class, () -> Utils.parseTypes("java.lang.Object,,java.lang.Iterable", getClass().getClassLoader()));
     }
 
     <E> void assertContainsInOrder(final Iterable<E> iterable, final E... expectedElements) {
@@ -97,4 +100,5 @@
         }
         assertFalse(iterator.hasNext());
     }
+
 }
diff --git a/modules/privilizer/api/src/main/java/org/apache/commons/weaver/privilizer/package-info.java b/modules/privilizer/api/src/main/java/org/apache/commons/weaver/privilizer/package-info.java
index 293cd05..98cef6e 100644
--- a/modules/privilizer/api/src/main/java/org/apache/commons/weaver/privilizer/package-info.java
+++ b/modules/privilizer/api/src/main/java/org/apache/commons/weaver/privilizer/package-info.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 /**
  * Defines the annotations that drive the privilizer weaver.
  */
diff --git a/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/Setup.java b/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/Setup.java
index cbcc981..17afa7e 100644
--- a/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/Setup.java
+++ b/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/Setup.java
@@ -23,7 +23,7 @@
     }
 
     /**
-     * This simply allows us to to set up test classes by doing
+     * This simply allows us to set up test classes by doing
      * privileged things without granting privileges to the test
      * code itself and thus making it impossible to test the effects
      * of privilization.
diff --git a/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/StaticUsingArgs.java b/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/StaticUsingArgs.java
index c9aa778..b90e74d 100644
--- a/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/StaticUsingArgs.java
+++ b/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/StaticUsingArgs.java
@@ -20,10 +20,9 @@
 
 import java.util.ArrayList;
 
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.weaver.privilizer.Privileged;
 
-
-
 public abstract class StaticUsingArgs {
 
     private StaticUsingArgs() {
@@ -45,7 +44,7 @@
         for (String name : names) {
             result.add(System.getProperty(name));
         }
-        return result.toArray(new String[result.size()]);
+        return result.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
     }
 
     @Privileged
diff --git a/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/UsingArgs.java b/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/UsingArgs.java
index 582267e..8e79a1a 100644
--- a/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/UsingArgs.java
+++ b/modules/privilizer/weaver/src/it/sample/src/main/java/org/apache/commons/weaver/privilizer/example/UsingArgs.java
@@ -20,6 +20,7 @@
 
 import java.util.ArrayList;
 
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.weaver.privilizer.Privileged;
 
 public class UsingArgs {
@@ -40,7 +41,7 @@
         for (String name : names) {
             result.add(System.getProperty(name));
         }
-        return result.toArray(new String[result.size()]);
+        return result.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
     }
 
     @Privileged
diff --git a/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/AccessLevel.java b/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/AccessLevel.java
index 25596ef..0de3b9f 100644
--- a/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/AccessLevel.java
+++ b/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/AccessLevel.java
@@ -57,7 +57,7 @@
     }
 
     /**
-     * Get the {@link AccessLevel} specified by a Java modifier.
+     * Gets the {@link AccessLevel} specified by a Java modifier.
      * @param mod from which to extract
      * @return {@link AccessLevel}
      * @throws IllegalArgumentException if multiple access modifiers specified
@@ -103,7 +103,7 @@
     }
 
     /**
-     * Get the {@link AccessLevel} value that should be used as a default.
+     * Gets the {@link AccessLevel} value that should be used as a default.
      * This is <em>not</em> "default"/{@code package} access, but rather the default
      * value that should be used for privilizer weaving.
      * @return {@link AccessLevel#PRIVATE}
diff --git a/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Policy.java b/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Policy.java
index 762e1d9..1d733fa 100644
--- a/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Policy.java
+++ b/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Policy.java
@@ -49,7 +49,7 @@
     ALWAYS;
 
     /**
-     * Get the {@link Policy} value that should be used as a default.
+     * Gets the {@link Policy} value that should be used as a default.
      * @return {@link Policy#DYNAMIC}
      */
     public static Policy defaultValue() {
diff --git a/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/package-info.java b/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/package-info.java
index 8e684af..e04202e 100644
--- a/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/package-info.java
+++ b/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/package-info.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 /**
  * Defines the Privilizer Weaver.
  */
diff --git a/parent/pom.xml b/parent/pom.xml
index 64fd7cc..a69e233 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -215,7 +215,6 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-pmd-plugin</artifactId>
-          <version>3.10.0</version>
         </plugin>
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
diff --git a/pom.xml b/pom.xml
index 36fb5f3..09c246f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,6 +106,7 @@
   </distributionManagement>
 
   <build>
+    <defaultGoal>clean verify apache-rat:check</defaultGoal>
     <pluginManagement>
       <plugins>
         <plugin>
@@ -369,6 +370,7 @@
         <jdk>[10,)</jdk>
       </activation>
       <build>
+		<defaultGoal>clean verify</defaultGoal>
         <pluginManagement>
           <plugins>
             <plugin>
diff --git a/processor/pom.xml b/processor/pom.xml
index 37fde70..d22140c 100644
--- a/processor/pom.xml
+++ b/processor/pom.xml
@@ -44,6 +44,12 @@
       <artifactId>commons-lang3</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <version>5.9.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>
diff --git a/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java b/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java
index 0f9ad99..60d201f 100644
--- a/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java
+++ b/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java
@@ -24,7 +24,7 @@
 import java.util.ServiceLoader;
 import java.util.logging.Logger;
 
-import org.apache.commons.weaver.lifecycle.WeaveLifecycle; //NOPMD used in javadoc
+import org.apache.commons.weaver.lifecycle.WeaveLifecycle; //NOPMD used in Javadoc
 import org.apache.commons.weaver.model.WeaveEnvironment;
 import org.apache.commons.weaver.spi.Cleaner;
 
diff --git a/processor/src/main/java/org/apache/commons/weaver/Finder.java b/processor/src/main/java/org/apache/commons/weaver/Finder.java
index cf0a608..17a2a8a 100644
--- a/processor/src/main/java/org/apache/commons/weaver/Finder.java
+++ b/processor/src/main/java/org/apache/commons/weaver/Finder.java
@@ -165,7 +165,7 @@
             try {
                 enumType = Class.forName(Type.getType(desc).getClassName()).asSubclass(Enum.class);
             } catch (final ClassNotFoundException e) {
-                throw new RuntimeException(e);
+                throw new IllegalArgumentException(e);
             }
             @SuppressWarnings("unchecked")
             final Enum<?> enumValue = Enum.valueOf(enumType, value);
@@ -376,7 +376,7 @@
         }
 
         /**
-         * Get the list of objects representing all scanned classes.
+         * Gets the list of objects representing all scanned classes.
          * @since 1.3
          * @return {@link List} of {@link Annotated}{@code <Class<?>>}
          */
@@ -703,7 +703,7 @@
             try {
                 result = getArchive().loadClass(className);
             } catch (final ClassNotFoundException e1) {
-                throw new RuntimeException(e1);
+                throw new IllegalArgumentException(e1);
             }
         }
         if (type.getSort() == Type.ARRAY) {
diff --git a/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java b/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java
index 5624c4e..97dd59a 100644
--- a/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java
+++ b/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java
@@ -24,7 +24,7 @@
 import java.util.ServiceLoader;
 import java.util.logging.Logger;
 
-import org.apache.commons.weaver.lifecycle.WeaveLifecycle; //NOPMD used in javadoc
+import org.apache.commons.weaver.lifecycle.WeaveLifecycle; //NOPMD used in Javadoc
 import org.apache.commons.weaver.model.WeaveEnvironment;
 import org.apache.commons.weaver.spi.Weaver;
 
diff --git a/processor/src/main/java/org/apache/commons/weaver/lifecycle/package-info.java b/processor/src/main/java/org/apache/commons/weaver/lifecycle/package-info.java
index d0480fa..3157ddb 100755
--- a/processor/src/main/java/org/apache/commons/weaver/lifecycle/package-info.java
+++ b/processor/src/main/java/org/apache/commons/weaver/lifecycle/package-info.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 /**
  * Weave lifecycle package.
  * @since 1.2
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java b/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java
index 720d5e4..62d7469 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java
@@ -19,7 +19,7 @@
 package org.apache.commons.weaver.model;
 
 import java.lang.annotation.Annotation;
-import java.lang.annotation.RetentionPolicy; //NOPMD used in javadoc
+import java.lang.annotation.RetentionPolicy; //NOPMD used in Javadoc
 import java.lang.reflect.AnnotatedElement;
 
 /**
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/NestedWeavable.java b/processor/src/main/java/org/apache/commons/weaver/model/NestedWeavable.java
index 7a0ef76..f67e754 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/NestedWeavable.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/NestedWeavable.java
@@ -45,7 +45,7 @@
     }
 
     /**
-     * Get the parent.
+     * Gets the parent.
      * @return {@code PARENT}
      */
     public PARENT getParent() {
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/ScanRequest.java b/processor/src/main/java/org/apache/commons/weaver/model/ScanRequest.java
index 4894174..a655ff6 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/ScanRequest.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/ScanRequest.java
@@ -61,7 +61,7 @@
     }
 
     /**
-     * Get registered {@link WeaveInterest}s.
+     * Gets registered {@link WeaveInterest}s.
      * @return {@link Iterable}
      */
     public Iterable<WeaveInterest> getInterests() {
@@ -69,7 +69,7 @@
     }
 
     /**
-     * Get registered {@link Class}es whose subtypes will be returned.
+     * Gets registered {@link Class}es whose subtypes will be returned.
      * @return {@link Set}
      */
     public Set<Class<?>> getSupertypes() {
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java b/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java
index 8e06ebc..159a847 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java
@@ -19,7 +19,7 @@
 package org.apache.commons.weaver.model;
 
 import java.lang.annotation.Annotation;
-import java.lang.annotation.RetentionPolicy; //NOPMD used in javadoc
+import java.lang.annotation.RetentionPolicy; //NOPMD used in Javadoc
 import java.lang.reflect.AnnotatedElement;
 import java.util.Arrays;
 import java.util.LinkedHashSet;
@@ -88,7 +88,7 @@
     }
 
     /**
-     * Get the target of this {@link Weavable}.
+     * Gets the target of this {@link Weavable}.
      * @return {@code TARGET}
      */
     public TARGET getTarget() {
@@ -96,7 +96,7 @@
     }
 
     /**
-     * Get all {@link Annotation}s associated with this element.
+     * Gets all {@link Annotation}s associated with this element.
      * @return {@link Annotation}[]
      */
     @Override
@@ -108,7 +108,7 @@
     }
 
     /**
-     * Get any instance of {@code annotationClass} attached to {@link #getTarget()}.
+     * Gets any instance of {@code annotationClass} attached to {@link #getTarget()}.
      * @param annotationClass {@link Class} annotation type
      * @param <T> annotation type
      * @return {@code T} instance if available, else {@code null}
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java b/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java
index 308b23d..79ab288 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java
@@ -57,7 +57,7 @@
     }
 
     /**
-     * Get a {@link WeavableField} representing {@code fld}.
+     * Gets a {@link WeavableField} representing {@code fld}.
      * @param fld to wrap
      * @return {@link WeavableField}
      */
@@ -66,7 +66,7 @@
     }
 
     /**
-     * Get a {@link WeavableMethod} representing {@code mt}.
+     * Gets a {@link WeavableMethod} representing {@code mt}.
      * @param methd to wrap
      * @return {@link WeavableMethod}
      */
@@ -75,7 +75,7 @@
     }
 
     /**
-     * Get a {@link WeavableConstructor} representing {@code ctor}.
+     * Gets a {@link WeavableConstructor} representing {@code ctor}.
      * @param ctor to wrap
      * @return {@link WeavableConstructor}
      */
@@ -84,7 +84,7 @@
     }
 
     /**
-     * Get {@link WeavableField}s of this {@link WeavableClass}.
+     * Gets {@link WeavableField}s of this {@link WeavableClass}.
      * @return {@link Iterable}
      */
     public Iterable<WeavableField<T>> getFields() {
@@ -92,7 +92,7 @@
     }
 
     /**
-     * Get {@link WeavableConstructor}s of this {@link WeavableClass}.
+     * Gets {@link WeavableConstructor}s of this {@link WeavableClass}.
      * @return {@link Iterable}
      */
     public Iterable<WeavableConstructor<T>> getConstructors() {
@@ -100,7 +100,7 @@
     }
 
     /**
-     * Get {@link WeavableMethod}s of this {@link WeavableClass}.
+     * Gets {@link WeavableMethod}s of this {@link WeavableClass}.
      * @return {@link Iterable}
      */
     public Iterable<WeavableMethod<T>> getMethods() {
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/WeavableExecutable.java b/processor/src/main/java/org/apache/commons/weaver/model/WeavableExecutable.java
index d7df972..30127e9 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/WeavableExecutable.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/WeavableExecutable.java
@@ -65,7 +65,7 @@
     protected abstract P createParameter(int index);
 
     /**
-     * Get the parameter types of {@link #getTarget()}.
+     * Gets the parameter types of {@link #getTarget()}.
      * @return {@link Class}[]
      */
     protected abstract Class<?>[] getParameterTypes();
@@ -79,7 +79,7 @@
     }
 
     /**
-     * Get the parameter at the specified index.
+     * Gets the parameter at the specified index.
      * @param index {@code int}
      * @return {@code P}
      */
@@ -88,7 +88,7 @@
     }
 
     /**
-     * Get the parameters declared by this {@link WeavableExecutable}.
+     * Gets the parameters declared by this {@link WeavableExecutable}.
      * @return {@link Iterable} of {@code P}
      */
     public Iterable<P> getParameters() {
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java b/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java
index fe324f4..916c4d7 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java
@@ -41,7 +41,7 @@
     }
 
     /**
-     * Get a {@link WeavableClass} representing {@code cls}.
+     * Gets a {@link WeavableClass} representing {@code cls}.
      * @param cls to wrap
      * @param <T> generic type of {@code cls}
      * @return {@link WeavableClass}
@@ -52,7 +52,7 @@
     }
 
     /**
-     * Get enclosed {@link WeavableClass}es.
+     * Gets enclosed {@link WeavableClass}es.
      * @return {@link Iterable}
      */
     public Iterable<WeavableClass<?>> getClasses() {
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/WeaveEnvironment.java b/processor/src/main/java/org/apache/commons/weaver/model/WeaveEnvironment.java
index c829eac..fa8f566 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/WeaveEnvironment.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/WeaveEnvironment.java
@@ -44,7 +44,7 @@
         }
 
         /**
-         * Get the content type, always "application/octet-stream".
+         * Gets the content type, always "application/octet-stream".
          * @return {@link String}
          */
         public String getContentType() {
@@ -52,7 +52,7 @@
         }
 
         /**
-         * Get an {@link InputStream} for reading this {@link Resource}.
+         * Gets an {@link InputStream} for reading this {@link Resource}.
          * @return {@link InputStream}
          * @throws IOException if unable to read
          */
@@ -61,7 +61,7 @@
         }
 
         /**
-         * Get the name of this {@link Resource}.
+         * Gets the name of this {@link Resource}.
          * @return {@link String}
          */
         public String getName() {
@@ -69,7 +69,7 @@
         }
 
         /**
-         * Get an {@link OutputStream} for writing to this {@link Resource}.
+         * Gets an {@link OutputStream} for writing to this {@link Resource}.
          * @return {@link OutputStream}
          * @throws IOException if unable to write
          */
@@ -84,12 +84,12 @@
     static final String CONTENT_TYPE = "application/octet-stream";
 
     /**
-     * Convert a classname into a resource name.
-     * @param classname to convert
+     * Convert a class name into a resource name.
+     * @param className to convert
      * @return String
      */
-    protected static String getResourceName(final String classname) {
-        return classname.replace('.', '/') + ".class";
+    protected static String getResourceName(final String className) {
+        return className.replace('.', '/') + ".class";
     }
 
     private static Supplier<String> supplier(final String format, final Object... args) {
@@ -172,7 +172,7 @@
     }
 
     /**
-     * Get a {@link Resource} representing {@code cls}.
+     * Gets a {@link Resource} representing {@code cls}.
      * @param cls type
      * @return {@link Resource}
      */
@@ -181,16 +181,16 @@
     }
 
     /**
-     * Get a {@link Resource} for the specified class.
-     * @param classname of type
+     * Gets a {@link Resource} for the specified class.
+     * @param className of type
      * @return {@link Resource}
      */
-    public final Resource getClassfile(final String classname) {
-        return getResource(getResourceName(classname));
+    public final Resource getClassfile(final String className) {
+        return getResource(getResourceName(className));
     }
 
     /**
-     * Get a {@link Resource} for the specified resource.
+     * Gets a {@link Resource} for the specified resource.
      * @param name of resource
      * @return {@link Resource}
      */
@@ -209,11 +209,11 @@
 
     /**
      * Delete the classfile for the specified class.
-     * @param classname of type
+     * @param className of type
      * @return whether successful
      */
-    public final boolean deleteClassfile(final String classname) {
-        return deleteResource(getResourceName(classname));
+    public final boolean deleteClassfile(final String className) {
+        return deleteResource(getResourceName(className));
     }
 
     /**
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/WeaveInterest.java b/processor/src/main/java/org/apache/commons/weaver/model/WeaveInterest.java
index e6a2327..412d603 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/WeaveInterest.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/WeaveInterest.java
@@ -28,7 +28,7 @@
 public final class WeaveInterest {
 
     /**
-     * Get a {@link WeaveInterest}.
+     * Gets a {@link WeaveInterest}.
      * @param annotationType observed annotation type
      * @param target attached element type
      * @return {@link WeaveInterest}
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/package-info.java b/processor/src/main/java/org/apache/commons/weaver/model/package-info.java
index f441690..3f132c9 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/package-info.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/package-info.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 /**
  * Defines a domain model for weaving operations.
  */
diff --git a/processor/src/main/java/org/apache/commons/weaver/package-info.java b/processor/src/main/java/org/apache/commons/weaver/package-info.java
index b2b4572..aae2953 100644
--- a/processor/src/main/java/org/apache/commons/weaver/package-info.java
+++ b/processor/src/main/java/org/apache/commons/weaver/package-info.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 /**
  * Defines the objects needed to perform file system-based weaving.
  */
diff --git a/processor/src/main/java/org/apache/commons/weaver/spi/WeaveLifecycleProvider.java b/processor/src/main/java/org/apache/commons/weaver/spi/WeaveLifecycleProvider.java
index 447fe69..338fdd6 100755
--- a/processor/src/main/java/org/apache/commons/weaver/spi/WeaveLifecycleProvider.java
+++ b/processor/src/main/java/org/apache/commons/weaver/spi/WeaveLifecycleProvider.java
@@ -18,7 +18,7 @@
  */
 package org.apache.commons.weaver.spi;
 
-import org.apache.commons.weaver.lifecycle.WeaveLifecycle; //NOPMD used in javadoc
+import org.apache.commons.weaver.lifecycle.WeaveLifecycle; //NOPMD used in Javadoc
 import org.apache.commons.weaver.lifecycle.WeaveLifecycleToken;
 
 /**
diff --git a/processor/src/main/java/org/apache/commons/weaver/spi/package-info.java b/processor/src/main/java/org/apache/commons/weaver/spi/package-info.java
index 7f34f14..7d0d4d8 100644
--- a/processor/src/main/java/org/apache/commons/weaver/spi/package-info.java
+++ b/processor/src/main/java/org/apache/commons/weaver/spi/package-info.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 /**
  * Defines the weaver module service provider interface (SPI).
  */
diff --git a/processor/src/main/java/org/apache/commons/weaver/utils/URLArray.java b/processor/src/main/java/org/apache/commons/weaver/utils/URLArray.java
index c6a4fb6..e3c40df 100644
--- a/processor/src/main/java/org/apache/commons/weaver/utils/URLArray.java
+++ b/processor/src/main/java/org/apache/commons/weaver/utils/URLArray.java
@@ -55,7 +55,7 @@
                 return f.toURI().toURL();
             } catch (final MalformedURLException e) {
                 // this shouldn't happen
-                throw new RuntimeException(e);
+                throw new IllegalArgumentException(e);
             }
         }).toArray(URL[]::new);
     }
diff --git a/processor/src/main/java/org/apache/commons/weaver/utils/package-info.java b/processor/src/main/java/org/apache/commons/weaver/utils/package-info.java
index b5fec3c..db46147 100644
--- a/processor/src/main/java/org/apache/commons/weaver/utils/package-info.java
+++ b/processor/src/main/java/org/apache/commons/weaver/utils/package-info.java
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 /**
  * Provides helpful utility classes.
  */
diff --git a/processor/src/test/java/org/apache/commons/weaver/test/weaver/TestWeaver.java b/processor/src/test/java/org/apache/commons/weaver/test/weaver/TestWeaver.java
index edc7cd7..1bd7871 100644
--- a/processor/src/test/java/org/apache/commons/weaver/test/weaver/TestWeaver.java
+++ b/processor/src/test/java/org/apache/commons/weaver/test/weaver/TestWeaver.java
@@ -37,7 +37,6 @@
 import org.junit.Assert;
 
 /**
- *
  */
 public class TestWeaver implements Weaver {
     public static List<Method> wovenMethods = new ArrayList<Method>();
diff --git a/processor/src/test/java/org/apache/commons/weaver/utils/ProvidersTest.java b/processor/src/test/java/org/apache/commons/weaver/utils/ProvidersTest.java
index 6058aa9..73ebd42 100755
--- a/processor/src/test/java/org/apache/commons/weaver/utils/ProvidersTest.java
+++ b/processor/src/test/java/org/apache/commons/weaver/utils/ProvidersTest.java
@@ -19,6 +19,7 @@
 package org.apache.commons.weaver.utils;
 
 import static org.junit.Assert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.util.Arrays;
 
@@ -29,17 +30,18 @@
 import org.apache.commons.weaver.spi.Weaver;
 import org.hamcrest.collection.IsIterableContainingInOrder;
 import org.junit.Test;
+import org.junit.jupiter.api.function.Executable;
 
 public class ProvidersTest {
 
-    @Test(expected = NullPointerException.class)
+    @Test
     public void testSortNull() {
-        Providers.sort(null);
+        assertThrows(NullPointerException.class, () -> Providers.sort(null));
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testSortNullElement() {
-        Providers.sort(Arrays.asList((Weaver) null));
+        assertThrows(IllegalArgumentException.class, () -> Providers.sort(Arrays.asList((Weaver) null)));
     }
 
     public interface FauxWeaveProvider extends WeaveLifecycleProvider<WeaveLifecycleToken.Weave> {
@@ -85,9 +87,9 @@
         assertThat(Providers.sort(Arrays.asList(y, w, x, z)), IsIterableContainingInOrder.contains(z, y, x, w));
     }
 
-    @Test(expected = IllegalStateException.class)
+    @Test
     public void testCircularSort() {
-        Providers.sort(Arrays.asList(y, z, monkeywrench));
+        assertThrows(IllegalStateException.class, () -> Providers.sort(Arrays.asList(y, z, monkeywrench)));
     }
 
 }
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index dfb207f..5f2c862 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -23,10 +23,12 @@
     <author email="mbenson@apache.org">Matt Benson</author>
   </properties>
   <body>
-    <release version="2.1" date="YYY-MM-DD" description="Requires Java 8 or greater.">
+    <release version="2.1" date="YYYY-MM-DD" description="Requires Java 8 or above.">
       <action type="fix" dev="ggregory">Update commons.japicmp.version 0.11.1 -> 0.15.1.</action>
+      <action type="fix" dev="ggregory" due-to="John Patrick">Use JUnit 5 assertThrows() #11, #12.</action>
+      <action type="update" dev="ggregory" due-to="Dependabot">Bump org.apache.maven:maven-core from 3.1.0 to 3.8.1 in /maven-plugin #13.</action>
     </release>
-    <release version="2.0" date="2018-09-07" description="Requires Java 8 or greater.">
+    <release version="2.0" date="2018-09-07" description="Requires Java 8 or above.">
       <action issue="WEAVER-16" type="fix">NullPointerException when weaving class with no package.</action>
       <action issue="WEAVER-17" type="fix">Maven plugin was packaged without its (generated) HelpMojo class.</action>
       <action issue="WEAVER-19" type="add">Upgrade to Java 8.</action>
diff --git a/src/changes/release-notes.vm b/src/changes/release-notes.vm
index 842226d..ddc7e89 100644
--- a/src/changes/release-notes.vm
+++ b/src/changes/release-notes.vm
@@ -117,6 +117,6 @@
 Historical list of changes: ${project.url}/changes-report.html
 
 For complete information on ${project.name}, including instructions on how to submit bug reports,
-patches, or suggestions for improvement, see the Apache ${project.name} website:
+patches, or suggestions for improvement, see the ${project.name} website:
 
 ${project.url}