XMLBEANS-563 - maven plugin does not have feature parity with codehaus maven plugin or allow all configuration options

git-svn-id: https://svn.apache.org/repos/asf/xmlbeans/trunk@1889280 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/xmlbeans/impl/tool/CodeGenUtil.java b/src/main/java/org/apache/xmlbeans/impl/tool/CodeGenUtil.java
index 7115cba..8b42fa0 100644
--- a/src/main/java/org/apache/xmlbeans/impl/tool/CodeGenUtil.java
+++ b/src/main/java/org/apache/xmlbeans/impl/tool/CodeGenUtil.java
@@ -22,6 +22,7 @@
 import java.net.URISyntaxException;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
+import java.security.CodeSource;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
@@ -232,6 +233,13 @@
 
     public static File[] systemClasspath() {
         List<File> cp = new ArrayList<>();
+        CodeSource cs = CodeGenUtil.class.getProtectionDomain().getCodeSource();
+        if (cs != null) {
+            cp.add(new File(cs.getLocation().getPath()));
+        } else {
+            System.err.println("Can't determine path of xmlbeans-*.jar - specify classpath explicitly!");
+        }
+
         String jcp = SystemProperties.getProperty("java.class.path");
         if (jcp != null) {
             String[] systemcp = jcp.split(File.pathSeparator);
diff --git a/src/main/java/org/apache/xmlbeans/impl/tool/Extension.java b/src/main/java/org/apache/xmlbeans/impl/tool/Extension.java
index 34e6103..7bf4ae4 100644
--- a/src/main/java/org/apache/xmlbeans/impl/tool/Extension.java
+++ b/src/main/java/org/apache/xmlbeans/impl/tool/Extension.java
@@ -24,17 +24,21 @@
  * XmlBeans Schema Compiler.
  */
 public class Extension {
-    private Class className;
-    private List<Param> params = new ArrayList<>();
+    private Class<?> className;
+    private final List<Param> params = new ArrayList<>();
 
-    public Class getClassName() {
+    public Class<?> getClassName() {
         return className;
     }
 
-    public void setClassName(Class className) {
+    public void setClassName(Class<?> className) {
         this.className = className;
     }
 
+    public void setClassName(String className) throws ClassNotFoundException {
+        this.className = Class.forName(className);
+    }
+
     public List<Param> getParams() {
         return params;
     }
@@ -48,7 +52,7 @@
     /**
      * A Param is just a name value pair applicable to the extension.
      */
-    public class Param {
+    public static class Param {
         private String name;
         private String value;
 
diff --git a/src/main/java/org/apache/xmlbeans/impl/tool/MavenPlugin.java b/src/main/java/org/apache/xmlbeans/impl/tool/MavenPlugin.java
index 1d81ae0..1322431 100644
--- a/src/main/java/org/apache/xmlbeans/impl/tool/MavenPlugin.java
+++ b/src/main/java/org/apache/xmlbeans/impl/tool/MavenPlugin.java
@@ -56,7 +56,7 @@
     private String sourceDir;
 
     /** sourceSchemas is a comma-delimited list of all the schemas you want to compile */
-    @Parameter( defaultValue = "*.xsd,*.wsdl" )
+    @Parameter( defaultValue = "*.xsd,*.wsdl,*.java" )
     private String sourceSchemas;
 
     /** xmlConfigs points to your xmlconfig.xml file */
@@ -128,10 +128,10 @@
      * with the same name appear, the definitions that happen to be processed
      * last will be ignored.
      *
-     * a comma-seperated list of namespace URIs
+     * a list of namespace URIs
      */
     @Parameter
-    private String mdefNamespaces;
+    private List<String> mdefNamespaces;
 
     /**
      * Only generate a subset of the bean methods. Comma-seperated list of the following method types:
@@ -148,6 +148,33 @@
     @Parameter
     private String partialMethods;
 
+    @Parameter( defaultValue = "false" )
+    private boolean download;
+
+    @Parameter( defaultValue = "true" )
+    private boolean sourceOnly;
+
+    @Parameter
+    private File basedir;
+
+    @Parameter
+    private String compiler;
+
+    @Parameter( defaultValue = CodeGenUtil.DEFAULT_MEM_START )
+    private String memoryInitialSize;
+
+    @Parameter( defaultValue = CodeGenUtil.DEFAULT_MEM_MAX )
+    private String memoryMaximumSize;
+
+    @Parameter( defaultValue = "${project.basedir}/target/${project.artifactId}-${project.version}-xmltypes.jar" )
+    private File outputJar;
+
+    @Parameter( defaultValue = "false" )
+    private boolean debug;
+
+    @Parameter
+    private List<Extension> extensions;
+
     public void execute() throws MojoExecutionException, MojoFailureException {
         if (sourceDir == null || sourceDir.isEmpty() || !new File(sourceDir).isDirectory()) {
             throw new MojoFailureException("Set configuration <sourceDir> (='"+sourceDir+"') to a valid directory containing *.xsd,*.wsdl files.");
@@ -165,8 +192,9 @@
             getLog().debug("classPath is null");
         }
 
-        List<File> xsds = new ArrayList<>();
-        List<File> wsdls = new ArrayList<>();
+        final List<File> xsds = new ArrayList<>();
+        final List<File> wsdls = new ArrayList<>();
+        final List<File> javas = new ArrayList<>();
         File base = new File(sourceDir);
         Resource resource = new Resource();
         resource.setDirectory(sourceDir);
@@ -184,8 +212,19 @@
         File[] schemaFiles = Objects.requireNonNull(base.listFiles((dir, name) ->
             !name.endsWith(".xsdconfig") && pat.matcher(name).matches()));
         for (File sf : schemaFiles) {
-            (sf.getName().endsWith(".wsdl") ? wsdls : xsds).add(sf);
-            resource.addInclude(sf.getName());
+            String name = sf.getName();
+            switch (name.replaceAll(".*\\.", "")) {
+                case "wsdl":
+                    wsdls.add(sf);
+                    break;
+                case "java":
+                    javas.add(sf);
+                    break;
+                default:
+                    xsds.add(sf);
+                    break;
+            }
+            resource.addInclude(name);
         }
 
         resources = Collections.singletonList(resource);
@@ -215,22 +254,15 @@
             entityResolver = new PassThroughResolver(cl, entityResolver, sourceDirURI, baseSchemaLocation);
 
             Parameters params = new Parameters();
-            if (!xsds.isEmpty()) {
-                params.setXsdFiles(xsds.toArray(new File[0]));
-            }
-            if (!wsdls.isEmpty()) {
-                params.setWsdlFiles(wsdls.toArray(new File[0]));
-            }
-            if (!configs.isEmpty()) {
-                params.setConfigFiles(configs.toArray(new File[0]));
-            }
-            if (!classPathList.isEmpty()) {
-                params.setClasspath(classPathList.toArray(new File[0]));
-            }
+            params.setXsdFiles(files(xsds));
+            params.setWsdlFiles(files(wsdls));
+            params.setJavaFiles(files(javas));
+            params.setConfigFiles(files(configs));
+            params.setClasspath(files(classPathList));
             params.setName(name);
             params.setSrcDir(new File(javaTargetDir));
             params.setClassesDir(new File(classTargetDir));
-            params.setNojavac(true);
+            params.setNojavac(sourceOnly);
             params.setVerbose(verbose);
             params.setEntityResolver(entityResolver);
             params.setQuiet(quite);
@@ -242,7 +274,7 @@
                 params.setRepackage("org.apache.xmlbeans.metadata:"+repackage);
             }
             if (mdefNamespaces != null && !mdefNamespaces.isEmpty()) {
-                params.setMdefNamespaces(new HashSet<>(Arrays.asList(mdefNamespaces.split(","))));
+                params.setMdefNamespaces(new HashSet<>(mdefNamespaces));
             }
             List<XmlError> errorList = new ArrayList<>();
             params.setErrorListener(errorList);
@@ -250,15 +282,14 @@
             if (partialMethods != null && !partialMethods.isEmpty()) {
                 params.setPartialMethods(parsePartialMethods(partialMethods));
             }
-//            params.setBaseDir(null);
-//            params.setJavaFiles(new File[0]);
-//            params.setCompiler(null);
-//            params.setMemoryInitialSize(null);
-//            params.setMemoryMaximumSize(null);
-//            params.setOutputJar(null);
-//            params.setDownload(false);
-//            params.setDebug(debug);
-//            params.setExtensions(null);
+            params.setDownload(download);
+            params.setBaseDir(basedir);
+            params.setCompiler(compiler);
+            params.setMemoryInitialSize(memoryInitialSize);
+            params.setMemoryMaximumSize(memoryMaximumSize);
+            params.setOutputJar(outputJar);
+            params.setDebug(debug);
+            params.setExtensions(extensions);
 
             boolean result = SchemaCompiler.compile(params);
 
@@ -276,6 +307,10 @@
 
     }
 
+    private static File[] files(List<File> files) {
+        return (files == null || files.isEmpty()) ? null : files.toArray(new File[0]);
+    }
+
     private static class PassThroughResolver implements EntityResolver {
         private final ClassLoader cl;
         private final EntityResolver delegate;
diff --git a/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java b/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java
index 8411e2b..ed6b57b 100644
--- a/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java
+++ b/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java
@@ -65,8 +65,8 @@
         System.out.println("    -catalog [file] -  catalog file for org.apache.xml.resolver.tools.CatalogResolver. (Note: needs resolver.jar from http://xml.apache.org/commons/components/resolver/index.html)");
         System.out.println("    -partialMethods [list] -  comma separated list of bean methods to be generated. Use \"-\" to negate and \"ALL\" for all." );
         System.out.println("                              processed left-to-right, e.g. \"ALL,-GET_LIST\" exclude java.util.List getters - see XmlOptions.BeanMethod" );
+        System.out.println("    -repackage - repackage specification, e.g. \"org.apache.xmlbeans.metadata:mypackage.metadata\" to change the metadata directory");
         /* Undocumented feature - pass in one schema compiler extension and related parameters
-        System.out.println("    -repackage - repackage specification");
         System.out.println("    -extension - registers a schema compiler extension");
         System.out.println("    -extensionParms - specify parameters for the compiler extension");
         System.out.println("    -schemaCodePrinter - specify SchemaCodePrinter class");
diff --git a/src/main/java/org/apache/xmlbeans/impl/tool/XMLBean.java b/src/main/java/org/apache/xmlbeans/impl/tool/XMLBean.java
index e7736b5..c397a40 100644
--- a/src/main/java/org/apache/xmlbeans/impl/tool/XMLBean.java
+++ b/src/main/java/org/apache/xmlbeans/impl/tool/XMLBean.java
@@ -574,7 +574,7 @@
 
     /**
      * One or more SchemaCompiler extensions can be passed in via the &lt;extension> subelement.
-     * Schema Compiler extensions must implement the interface com.xbean.too.SchemaCompilerExtension
+     * Schema Compiler extensions must implement the interface org.apache.xmlbeans.impl.tool.SchemaCompilerExtension
      */
     public Extension createExtension() {
         Extension e = new Extension();
diff --git a/src/main/resources/maven/plugin.xml b/src/main/resources/maven/plugin.xml
index 900326e..e8a22a3 100644
--- a/src/main/resources/maven/plugin.xml
+++ b/src/main/resources/maven/plugin.xml
@@ -130,7 +130,7 @@
                     <type>java.lang.String</type>
                     <required>false</required>
                     <editable>true</editable>
-                    <description></description>
+                    <description>Comma-separated list of jars and class folders</description>
                 </parameter>
                 <parameter>
                     <name>classTargetDir</name>
@@ -150,8 +150,8 @@
                     <name>resources</name>
                     <type>java.util.List</type>
                     <required>false</required>
-                    <editable>true</editable>
-                    <description></description>
+                    <editable>false</editable>
+                    <description>Singleton list containing the output directory for resources (output only, i.e. inputs are overridden)</description>
                 </parameter>
                 <parameter>
                     <name>sourceDir</name>
@@ -190,17 +190,20 @@
                 </parameter>
                 <parameter>
                     <name>mdefNamespaces</name>
-                    <type>java.lang.String</type>
+                    <type>java.util.List</type>
                     <required>false</required>
                     <editable>true</editable>
-                    <description>
+                    <description><![CDATA[
                         If this option is set, then the schema compiler will permit and
                         ignore multiple definitions of the same component (element, attribute,
                         type, etc) names in the given namespaces.  If multiple definitions
                         with the same name appear, the definitions that happen to be processed
                         last will be ignored.
 
-                        a comma-seperated list of namespace URIs
+                        Format:
+                        <mdefNamespaces>
+                            <mdefNamespace>http://lazy.dev/duplicated/namespace</mdefNamespace>
+                        <mdefNamespaces>]]>
                     </description>
                 </parameter>
                 <parameter>
@@ -263,12 +266,89 @@
                     <editable>true</editable>
                     <description>do not validate contents of documentation-tags</description>
                 </parameter>
+                <parameter>
+                    <name>download</name>
+                    <type>boolean</type>
+                    <required>false</required>
+                    <editable>true</editable>
+                    <description>permit network downloads for imports and includes</description>
+                </parameter>
+                <parameter>
+                    <name>debug</name>
+                    <type>boolean</type>
+                    <required>false</required>
+                    <editable>true</editable>
+                    <description>compile with debug symbols</description>
+                </parameter>
+                <parameter>
+                    <name>sourceOnly</name>
+                    <type>boolean</type>
+                    <required>false</required>
+                    <editable>true</editable>
+                    <description>do not compile .java files or jar the output</description>
+                </parameter>
+                <parameter>
+                    <name>basedir</name>
+                    <type>java.io.File</type>
+                    <required>false</required>
+                    <editable>true</editable>
+                    <description>basedir of the source files - defaults to the directory of the first source file</description>
+                </parameter>
+                <parameter>
+                    <name>compiler</name>
+                    <type>java.lang.String</type>
+                    <required>false</required>
+                    <editable>true</editable>
+                    <description>path to the javac compiler</description>
+                </parameter>
+                <parameter>
+                    <name>memoryInitialSize</name>
+                    <type>java.lang.String</type>
+                    <required>false</required>
+                    <editable>true</editable>
+                    <description>initial memory for external java compiler</description>
+                </parameter>
+                <parameter>
+                    <name>memoryMaximumSize</name>
+                    <type>java.lang.String</type>
+                    <required>false</required>
+                    <editable>true</editable>
+                    <description>maximum memory for external java compiler</description>
+                </parameter>
+                <parameter>
+                    <name>outputJar</name>
+                    <type>java.io.File</type>
+                    <required>false</required>
+                    <editable>true</editable>
+                    <description>the name of the output jar</description>
+                </parameter>
+                <parameter>
+                    <name>extensions</name>
+                    <type>java.util.List</type>
+                    <required>false</required>
+                    <editable>true</editable>
+                    <description><![CDATA[(experimental) registers a schema compiler extensions implementing org.apache.xmlbeans.impl.tool.SchemaCompilerExtension
+
+                    Example:
+					<extensions>
+						<extension>
+							<className>org.custom.MySchemaCompilerExtension</className>
+							<params>
+								<param>
+									<name>name</name>
+									<value>value</value>
+								</param>
+							</params>
+						</extension>
+					</extensions>
+                ]]></description>
+                </parameter>
             </parameters>
             <configuration>
                 <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
                 <buildSchemas implementation="boolean" default-value="true"/>
                 <sourceDir implementation="java.lang.String" default-value="${project.basedir}/src/main/schema"/>
-                <sourceSchemas implementation="java.lang.String" default-value="*.xsd,*.wsdl"/>
+                <sourceSchemas implementation="java.lang.String" default-value="*.xsd,*.wsdl,*.java"/>
                 <xmlConfigs implementation="java.lang.String" default-value="${project.basedir}/src/schema/xmlconfig.xml"/>
                 <javaTargetDir implementation="java.lang.String" default-value="${project.basedir}/target/generated-sources"/>
                 <classTargetDir implementation="java.lang.String" default-value="${project.basedir}/target/generated-resources"/>
@@ -281,6 +361,12 @@
                 <noPvr implementation="boolean" default-value="false"/>
                 <noAnn implementation="boolean" default-value="false"/>
                 <noVDoc implementation="boolean" default-value="false"/>
+                <download implementation="boolean" default-value="false"/>
+                <debug implementation="boolean" default-value="false"/>
+                <sourceOnly implementation="boolean" default-value="true"/>
+                <memoryInitialSize implementation="java.lang.String" default-value="8m"/>
+                <memoryMaximumSize implementation="java.lang.String" default-value="256m"/>
+                <outputJar implementation="java.io.File" default-value="${project.basedir}/target/${project.artifactId}-${project.version}-xmltypes.jar"/>
             </configuration>
         </mojo>
     </mojos>
@@ -290,176 +376,11 @@
             <artifactId>maven-plugin-api</artifactId>
             <version>3.6.1</version>
         </dependency>
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven</groupId>-->
-<!--            <artifactId>maven-model</artifactId>-->
-<!--            <version>3.6.1</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven</groupId>-->
-<!--            <artifactId>maven-artifact</artifactId>-->
-<!--            <version>3.6.1</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.commons</groupId>-->
-<!--            <artifactId>commons-lang3</artifactId>-->
-<!--            <version>3.8.1</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.eclipse.sisu</groupId>-->
-<!--            <artifactId>org.eclipse.sisu.plexus</artifactId>-->
-<!--            <version>0.3.3</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>javax.enterprise</groupId>-->
-<!--            <artifactId>cdi-api</artifactId>-->
-<!--            <version>1.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>javax.annotation</groupId>-->
-<!--            <artifactId>jsr250-api</artifactId>-->
-<!--            <version>1.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>javax.inject</groupId>-->
-<!--            <artifactId>javax.inject</artifactId>-->
-<!--            <version>1</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.eclipse.sisu</groupId>-->
-<!--            <artifactId>org.eclipse.sisu.inject</artifactId>-->
-<!--            <version>0.3.3</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.codehaus.plexus</groupId>-->
-<!--            <artifactId>plexus-component-annotations</artifactId>-->
-<!--            <version>1.5.5</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.codehaus.plexus</groupId>-->
-<!--            <artifactId>plexus-utils</artifactId>-->
-<!--            <version>3.2.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.codehaus.plexus</groupId>-->
-<!--            <artifactId>plexus-classworlds</artifactId>-->
-<!--            <version>2.6.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven.shared</groupId>-->
-<!--            <artifactId>file-management</artifactId>-->
-<!--            <version>3.0.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven.shared</groupId>-->
-<!--            <artifactId>maven-shared-io</artifactId>-->
-<!--            <version>3.0.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven</groupId>-->
-<!--            <artifactId>maven-compat</artifactId>-->
-<!--            <version>3.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven</groupId>-->
-<!--            <artifactId>maven-model-builder</artifactId>-->
-<!--            <version>3.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven</groupId>-->
-<!--            <artifactId>maven-settings</artifactId>-->
-<!--            <version>3.0</version>-->
-<!--        </dependency>-->
         <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-core</artifactId>
             <version>3.0</version>
         </dependency>
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven</groupId>-->
-<!--            <artifactId>maven-settings-builder</artifactId>-->
-<!--            <version>3.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven</groupId>-->
-<!--            <artifactId>maven-repository-metadata</artifactId>-->
-<!--            <version>3.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven</groupId>-->
-<!--            <artifactId>maven-aether-provider</artifactId>-->
-<!--            <version>3.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.sonatype.aether</groupId>-->
-<!--            <artifactId>aether-impl</artifactId>-->
-<!--            <version>1.7</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.sonatype.aether</groupId>-->
-<!--            <artifactId>aether-spi</artifactId>-->
-<!--            <version>1.7</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.sonatype.aether</groupId>-->
-<!--            <artifactId>aether-api</artifactId>-->
-<!--            <version>1.7</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.sonatype.aether</groupId>-->
-<!--            <artifactId>aether-util</artifactId>-->
-<!--            <version>1.7</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.sonatype.plexus</groupId>-->
-<!--            <artifactId>plexus-sec-dispatcher</artifactId>-->
-<!--            <version>1.3</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.sonatype.plexus</groupId>-->
-<!--            <artifactId>plexus-cipher</artifactId>-->
-<!--            <version>1.4</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.codehaus.plexus</groupId>-->
-<!--            <artifactId>plexus-interpolation</artifactId>-->
-<!--            <version>1.14</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.sonatype.sisu</groupId>-->
-<!--            <artifactId>sisu-inject-plexus</artifactId>-->
-<!--            <version>1.4.2</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.sonatype.sisu</groupId>-->
-<!--            <artifactId>sisu-inject-bean</artifactId>-->
-<!--            <version>1.4.2</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.sonatype.sisu</groupId>-->
-<!--            <artifactId>sisu-guice</artifactId>-->
-<!--            <version>2.1.7</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven.wagon</groupId>-->
-<!--            <artifactId>wagon-provider-api</artifactId>-->
-<!--            <version>2.10</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>org.apache.maven.shared</groupId>-->
-<!--            <artifactId>maven-shared-utils</artifactId>-->
-<!--            <version>3.0.0</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>commons-io</groupId>-->
-<!--            <artifactId>commons-io</artifactId>-->
-<!--            <version>2.4</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>com.google.code.findbugs</groupId>-->
-<!--            <artifactId>jsr305</artifactId>-->
-<!--            <version>2.0.1</version>-->
-<!--        </dependency>-->
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-api</artifactId>