diff --git a/.gitignore b/.gitignore
index 82fecb7..d6d2ffe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,6 @@
 *.iml
 *.iws
 .DS_Store
+/derby.log
+/jackrabbit.log_IS_UNDEFINED
+/jetty.log_IS_UNDEFINED
diff --git a/BUILDING.txt b/BUILDING.txt
index 0772315..7ed8227 100644
--- a/BUILDING.txt
+++ b/BUILDING.txt
@@ -33,7 +33,7 @@
 mvn -V -Ptest-deploy -Prelease -P japicmp -P jacoco site
 
 Deploy the jar files:
- mvn -V -Ptest-deploy -Prelease deploy
+mvn -V -Ptest-deploy -Prelease deploy
 
 Assemble all sites into one:
 mvn -V -Ptest-deploy -Prelease site:stage
diff --git a/commons-vfs2-distribution/src/assembly/bin.xml b/commons-vfs2-distribution/src/assembly/bin.xml
index c175e60..15a6179 100644
--- a/commons-vfs2-distribution/src/assembly/bin.xml
+++ b/commons-vfs2-distribution/src/assembly/bin.xml
@@ -15,32 +15,32 @@
 limitations under the License.
 -->
 <assembly>
-    <id>bin</id>
-    <formats>
-        <format>tar.gz</format>
-        <format>zip</format>
-    </formats>
-    <includeSiteDirectory>false</includeSiteDirectory>
-  
-    <dependencySets>
-        <dependencySet>
-            <includes>
-                <include>org.apache.commons:commons-vfs2</include>
-                <include>org.apache.commons:commons-vfs2-examples</include>
-            </includes>
-            <useProjectArtifact>false</useProjectArtifact>
-        </dependencySet>
-    </dependencySets>
+  <id>bin</id>
+  <formats>
+    <format>tar.gz</format>
+    <format>zip</format>
+  </formats>
+  <includeSiteDirectory>false</includeSiteDirectory>
 
-    <fileSets>
-        <fileSet>
-            <directory>..</directory>
-            <includes>
-                <include>LICENSE.txt</include>
-                <include>NOTICE.txt</include>
-                <include>RELEASE-NOTES.txt</include>
-            </includes>
-        </fileSet>
-    </fileSets>
+  <dependencySets>
+    <dependencySet>
+      <includes>
+        <include>org.apache.commons:commons-vfs2</include>
+        <include>org.apache.commons:commons-vfs2-examples</include>
+      </includes>
+      <useProjectArtifact>false</useProjectArtifact>
+    </dependencySet>
+  </dependencySets>
 
-	</assembly>
+  <fileSets>
+    <fileSet>
+      <directory>..</directory>
+      <includes>
+        <include>LICENSE.txt</include>
+        <include>NOTICE.txt</include>
+        <include>RELEASE-NOTES.txt</include>
+      </includes>
+    </fileSet>
+  </fileSets>
+
+</assembly>
diff --git a/commons-vfs2-distribution/src/assembly/src.xml b/commons-vfs2-distribution/src/assembly/src.xml
index 568a52a..f5d03f2 100644
--- a/commons-vfs2-distribution/src/assembly/src.xml
+++ b/commons-vfs2-distribution/src/assembly/src.xml
@@ -48,8 +48,9 @@
 
         <!-- IDEs -->
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?maven-eclipse\.xml]</exclude>
-        <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.project]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.classpath]</exclude>
+        <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.project]</exclude>
+        <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.travis.yml]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iws]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.ipr]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?[^/]*\.iml]</exclude>
@@ -66,6 +67,7 @@
         <!-- release-plugin temp files -->
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?pom\.xml\.releaseBackup]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?release\.properties]</exclude>
+        <exclude>**/*.log_IS_UNDEFINED</exclude>
       </excludes>
     </fileSet>
   </fileSets>
diff --git a/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/mime/MimeAttributesMap.java b/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/mime/MimeAttributesMap.java
index d1e2897..9824da2 100644
--- a/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/mime/MimeAttributesMap.java
+++ b/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/mime/MimeAttributesMap.java
@@ -31,6 +31,7 @@
 
 import javax.mail.Address;
 import javax.mail.Header;
+import javax.mail.Message.RecipientType;
 import javax.mail.MessagingException;
 import javax.mail.Part;
 import javax.mail.internet.MimeMessage;
@@ -136,19 +137,19 @@
         if (part instanceof MimeMessage) {
             final MimeMessage message = (MimeMessage) part;
             try {
-                final Address[] address = message.getRecipients(MimeMessage.RecipientType.BCC);
+                final Address[] address = message.getRecipients(RecipientType.BCC);
                 ret.put(OBJECT_PREFIX + "Recipients.BCC", address);
             } catch (final MessagingException e) {
                 log.debug(e.getLocalizedMessage(), e);
             }
             try {
-                final Address[] address = message.getRecipients(MimeMessage.RecipientType.CC);
+                final Address[] address = message.getRecipients(RecipientType.CC);
                 ret.put(OBJECT_PREFIX + "Recipients.CC", address);
             } catch (final MessagingException e) {
                 log.debug(e.getLocalizedMessage(), e);
             }
             try {
-                final Address[] address = message.getRecipients(MimeMessage.RecipientType.TO);
+                final Address[] address = message.getRecipients(RecipientType.TO);
                 ret.put(OBJECT_PREFIX + "Recipients.TO", address);
             } catch (final MessagingException e) {
                 log.debug(e.getLocalizedMessage(), e);
diff --git a/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/smb/SmbFileObject.java b/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/smb/SmbFileObject.java
index 3024e5e..74abcb2 100644
--- a/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/smb/SmbFileObject.java
+++ b/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/smb/SmbFileObject.java
@@ -33,6 +33,7 @@
 import org.apache.commons.vfs2.util.RandomAccessMode;
 import org.apache.commons.vfs2.util.UserAuthenticatorUtils;
 
+import jcifs.smb.NtStatus;
 import jcifs.smb.NtlmPasswordAuthentication;
 import jcifs.smb.SmbException;
 import jcifs.smb.SmbFile;
@@ -191,7 +192,7 @@
         try {
             return new SmbFileInputStream(file);
         } catch (final SmbException e) {
-            if (e.getNtStatus() == SmbException.NT_STATUS_NO_SUCH_FILE) {
+            if (e.getNtStatus() == NtStatus.NT_STATUS_NO_SUCH_FILE) {
                 throw new org.apache.commons.vfs2.FileNotFoundException(getName());
             } else if (file.isDirectory()) {
                 throw new FileTypeHasNoContentException(getName());
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileSystemKey.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileSystemKey.java
index b2904d4..a5c297c 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileSystemKey.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileSystemKey.java
@@ -26,7 +26,7 @@
     private static final FileSystemOptions EMPTY_OPTIONS = new FileSystemOptions();
 
     private final Comparable<?> key;
-    
+
     /** Never null as the ctor sets it to EMPTY_OPTIONS if input is null. */
     private final FileSystemOptions fileSystemOptions;
 
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/ftp/test/MultipleConnectionTestCase.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/ftp/test/MultipleConnectionTestCase.java
index 53dd942..783f691 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/ftp/test/MultipleConnectionTestCase.java
+++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/ftp/test/MultipleConnectionTestCase.java
@@ -19,6 +19,7 @@
 import java.io.IOException;
 import java.net.SocketException;
 
+import org.apache.commons.AbstractVfsTestCase;
 import org.apache.commons.net.ftp.FTPClient;
 import org.apache.commons.vfs2.FileObject;
 import org.apache.commons.vfs2.FileSystemException;
@@ -32,7 +33,7 @@
 
     @BeforeClass
     public static void setUpClass() throws FtpException, IOException {
-        FtpProviderTestCase.setUpClass(FtpProviderTestCase.getTestDirectory(), null);
+        FtpProviderTestCase.setUpClass(AbstractVfsTestCase.getTestDirectory(), null);
     }
 
     @AfterClass
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/local/test/WindowsFileNameTests.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/local/test/WindowsFileNameTests.java
index e8cf01d..34d3882 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/local/test/WindowsFileNameTests.java
+++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/local/test/WindowsFileNameTests.java
@@ -31,7 +31,7 @@
  * Only executed on Windows O/S.
  */
 public class WindowsFileNameTests extends AbstractProviderTestCase {
-    
+
     @Test
     public void testWindowsRoots() throws Exception {
         // valid URI forms of the filesystem root
diff --git a/pom.xml b/pom.xml
index 1959cbe..e39e3fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -165,7 +165,7 @@
     <commons.bc.version>2.6.0</commons.bc.version>
     <commons.releaseManagerName>Gary Gregory</commons.releaseManagerName>    
     <commons.releaseManagerKey>86fdc7e2a11262cb</commons.releaseManagerKey>  
-    <commons.rc.version>RC2</commons.rc.version>
+    <commons.rc.version>RC3</commons.rc.version>
     <commons.release.name>commons-vfs-${commons.release.version}</commons.release.name>
     <commons.release.desc>(requires Java 8)</commons.release.desc>
 
