Merge branch 'master' of https://gitbox.apache.org/repos/asf/directory-server
diff --git a/Jenkinsfile b/Jenkinsfile
index ae995a8..c839e5f 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -180,8 +180,7 @@
         }
       }
       steps {
-        sh 'mvn -V -U clean install -DskipTests'
-        sh 'cd installers && mvn -V clean package -Pinstallers -Pdocker'
+        sh 'mvn -V -U clean verify -DskipTests -Pinstallers -Pdocker'
         stash name: 'deb', includes: 'installers/target/installers/*.deb,installers/target/docker/*deb*'
         stash name: 'rpm', includes: 'installers/target/installers/*.rpm,installers/target/docker/*rpm*'
         stash name: 'bin', includes: 'installers/target/installers/*.bin,installers/target/docker/*bin*'
diff --git a/installers-maven-plugin/pom.xml b/installers-maven-plugin/pom.xml
index a18d47d..bc7182d 100644
--- a/installers-maven-plugin/pom.xml
+++ b/installers-maven-plugin/pom.xml
@@ -41,7 +41,7 @@
 
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
+      <artifactId>maven-core</artifactId>
     </dependency>
 
     <dependency>
diff --git a/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/GenerateMojo.java b/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/GenerateMojo.java
index 4e52f7d..718ff4c 100644
--- a/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/GenerateMojo.java
+++ b/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/GenerateMojo.java
@@ -24,7 +24,6 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Set;
 
 import org.apache.directory.server.installers.archive.ArchiveInstallerCommand;
 import org.apache.directory.server.installers.archive.ArchiveTarget;
@@ -116,13 +115,6 @@
     private ArchiveTarget[] archiveTargets;
 
     /**
-     * The exclusions.
-     * 
-     * @parameter
-     */
-    private Set<String> excludes;
-
-    /**
      *  The dpkg utility executable.
      *  
      *  @parameter
@@ -305,17 +297,6 @@
 
 
     /**
-     * Gets the excluded artifacts.
-     *
-     * @return the excluded artifacts
-     */
-    public Set<String> getExcludes()
-    {
-        return excludes;
-    }
-
-
-    /**
      * Gets the dpkg utility.
      *
      * @return the dpkg utility
diff --git a/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/MojoHelperUtils.java b/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/MojoHelperUtils.java
index e8fdfa3..87dc5fa 100644
--- a/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/MojoHelperUtils.java
+++ b/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/MojoHelperUtils.java
@@ -31,7 +31,6 @@
 import java.io.Writer;
 import java.nio.file.Files;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
@@ -117,40 +116,31 @@
     }
 
 
-    public static void copyDependencies( GenerateMojo mymojo, InstallationLayout layout )
-        throws MojoFailureException
-    {
-        copyDependencies( mymojo, layout, true );
-    }
-
-
     public static void copyDependencies( GenerateMojo myMojo, InstallationLayout layout,
         boolean includeWrapperDependencies )
         throws MojoFailureException
     {
         // Creating the excludes set
-        Set<String> excludes = new HashSet<>();
+        Set<String> includes = new HashSet<>();
 
-        if ( myMojo.getExcludes() != null )
-        {
-            excludes.addAll( myMojo.getExcludes() );
-        }
+        // Always add the apacheds-service.jar
+        includes.add( "org.apache.directory.server:apacheds-service" );
 
         // Adding the wrapper dependencies to the excludes set
-        if ( !includeWrapperDependencies )
+        if ( includeWrapperDependencies )
         {
-            excludes.add( "org.apache.directory.server:apacheds-wrapper" );
-            excludes.add( "tanukisoft:wrapper" );
+            includes.add( "org.apache.directory.server:apacheds-wrapper" );
+            includes.add( "tanukisoft:wrapper" );
         }
 
         // Filtering and copying dependencies
-        List<Artifact> artifacts = ( List<Artifact> ) ( myMojo.getProject().getRuntimeArtifacts() );
+        Set<Artifact> artifacts = myMojo.getProject().getArtifacts();
 
         for ( Artifact artifact : artifacts )
         {
             String key = artifact.getGroupId() + ":" + artifact.getArtifactId();
 
-            if ( !excludes.contains( key ) )
+            if ( includes.contains( key ) )
             {
                 try
                 {
diff --git a/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/ReflectionProperties.java b/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/ReflectionProperties.java
index 62eae77..09491cf 100644
--- a/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/ReflectionProperties.java
+++ b/installers-maven-plugin/src/main/java/org/apache/directory/server/installers/ReflectionProperties.java
@@ -20,12 +20,12 @@
 package org.apache.directory.server.installers;
 
 
+import java.util.Properties;
+
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
 
-import java.util.Properties;
-
 
 /**
  * Took this from the maven resource plugin in trunk or else I would have added it 
diff --git a/installers/src/test/docker/archive.test b/installers/src/test/docker/archive.test
index d85579d..52b611a 100644
--- a/installers/src/test/docker/archive.test
+++ b/installers/src/test/docker/archive.test
@@ -122,7 +122,7 @@
 # assert password warning in log
 grep ".*WARN.*admin password.*security breach.*" /opt/${DIRNAME}/instances/default/log/apacheds.log
 # assert no error in log
-#! grep ".*ERROR.*" /opt/${DIRNAME}/instances/default/log/apacheds.log
+grep ".*ERROR.*" /opt/${DIRNAME}/instances/default/log/apacheds.log && false
 
 # SUCCESS
 echo "SUCCESS"
diff --git a/installers/src/test/docker/bin-DIRSERVER-2173.test b/installers/src/test/docker/bin-DIRSERVER-2173.test
index ebab73a..c494e10 100644
--- a/installers/src/test/docker/bin-DIRSERVER-2173.test
+++ b/installers/src/test/docker/bin-DIRSERVER-2173.test
@@ -104,7 +104,7 @@
 # assert password warning in log
 grep ".*WARN.*admin password.*security breach.*" /var/lib/${DIRNAME}/default/log/apacheds.log
 # assert no error in log
-#! grep ".*ERROR.*" /var/lib/${DIRNAME}/default/log/apacheds.log
+grep ".*ERROR.*" /var/lib/${DIRNAME}/default/log/apacheds.log && false
 
 # SUCCESS
 echo "SUCCESS"
diff --git a/installers/src/test/docker/bin.test b/installers/src/test/docker/bin.test
index 47c02af..1ae9dbc 100644
--- a/installers/src/test/docker/bin.test
+++ b/installers/src/test/docker/bin.test
@@ -103,7 +103,7 @@
 # assert password warning in log
 grep ".*WARN.*admin password.*security breach.*" /var/lib/${DIRNAME}/default/log/apacheds.log
 # assert no error in log
-#! grep ".*ERROR.*" /var/lib/${DIRNAME}/default/log/apacheds.log
+grep ".*ERROR.*" /var/lib/${DIRNAME}/default/log/apacheds.log && false
 
 # SUCCESS
 echo "SUCCESS"
diff --git a/installers/src/test/docker/deb.test b/installers/src/test/docker/deb.test
index cb81731..8fa99b8 100644
--- a/installers/src/test/docker/deb.test
+++ b/installers/src/test/docker/deb.test
@@ -40,6 +40,9 @@
 apt-get -qq -y install ldap-utils netcat procps
 command -v java >/dev/null 2>&1 || apt-get -qq -y install default-jre-headless
 
+# assert no duplicate files (DIRSERVER-2197)
+test $(dpkg -c /apacheds.deb | sort | uniq -cd | wc -l) -eq 0
+
 # install
 dpkg -i /apacheds.deb
 
@@ -91,7 +94,7 @@
 # assert password warning in log
 grep ".*WARN.*admin password.*security breach.*" /var/lib/${DIRNAME}/default/log/apacheds.log
 # assert no error in log
-#! grep ".*ERROR.*" /var/lib/${DIRNAME}/default/log/apacheds.log
+grep ".*ERROR.*" /var/lib/${DIRNAME}/default/log/apacheds.log && false
 
 # uninstall
 dpkg -P apacheds
diff --git a/installers/src/test/docker/rpm.test b/installers/src/test/docker/rpm.test
index 4838a58..7d8ccc6 100644
--- a/installers/src/test/docker/rpm.test
+++ b/installers/src/test/docker/rpm.test
@@ -42,6 +42,9 @@
 yum -y -q install openldap-clients nmap procps
 command -v java >/dev/null 2>&1 || yum -y -q install java-openjdk-headless
 
+# assert no duplicate files (DIRSERVER-2197)
+test $(rpm -qlp /apacheds.rpm | sort | uniq -cd | wc -l) -eq 0
+
 # install ApacheDS
 rpm -Uvh apacheds.rpm
 
@@ -93,7 +96,7 @@
 # assert password warning in log
 grep ".*WARN.*admin password.*security breach.*" /var/lib/${DIRNAME}/default/log/apacheds.log
 # assert no error in log
-#! grep ".*ERROR.*" /var/lib/${DIRNAME}/default/log/apacheds.log
+grep ".*ERROR.*" /var/lib/${DIRNAME}/default/log/apacheds.log && false
 
 # uninstall
 rpm -e apacheds
diff --git a/pom.xml b/pom.xml
index dd9da92..da22322 100644
--- a/pom.xml
+++ b/pom.xml
@@ -73,15 +73,12 @@
     <ldapsdk.version>4.1</ldapsdk.version>
     <log4j.version>1.2.17</log4j.version>
     <logback.version>1.2.3</logback.version>
-    <maven.archiver.version>3.1.1</maven.archiver.version>
-    <maven.artifact.version>3.3.9</maven.artifact.version>
-    <maven.plugin.api.version>3.3.9</maven.plugin.api.version>
-    <maven.project.version>3.0-alpha-2</maven.project.version>
+    <maven.version>3.6.1</maven.version>
     <mina.core.version>2.1.3</mina.core.version>
     <org.apache.felix.version>6.0.3</org.apache.felix.version>
     <pax-exam.version>4.11.0</pax-exam.version>
     <pax-url.version>2.5.4</pax-url.version>
-    <plexus.utils.version>3.0.24</plexus.utils.version>
+    <plexus.utils.version>3.2.0</plexus.utils.version>
     <slf4j.api.version>1.7.26</slf4j.api.version>
     <slf4j.api.bundleversion>"$«range;[==,=+)»"</slf4j.api.bundleversion>
     <slf4j.log4j12.version>1.7.26</slf4j.log4j12.version>
@@ -1178,19 +1175,13 @@
       <dependency>
         <groupId>org.apache.maven</groupId>
         <artifactId>maven-plugin-api</artifactId>
-        <version>${maven.plugin.api.version}</version>
+        <version>${maven.version}</version>
       </dependency>
 
       <dependency>
         <groupId>org.apache.maven</groupId>
-        <artifactId>maven-project</artifactId>
-        <version>${maven.project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-archiver</artifactId>
-        <version>${maven.archiver.version}</version>
+        <artifactId>maven-core</artifactId>
+        <version>${maven.version}</version>
       </dependency>
 
       <dependency>
@@ -1200,12 +1191,6 @@
       </dependency>
 
       <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-artifact</artifactId>
-        <version>${maven.artifact.version}</version>
-      </dependency>
-
-      <dependency>
         <groupId>ldapsdk</groupId>
         <artifactId>ldapsdk</artifactId>
         <version>${ldapsdk.version}</version>