You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/09/24 12:38:21 UTC

[commons-vfs] 03/03: [VFS-851] Split out HDFS provider into its own Maven module commons-vfs2-hdfs

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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit e6702c04cddf3189a1557e43861c03c49d32add3
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Sep 24 08:38:12 2023 -0400

    [VFS-851] Split out HDFS provider into its own Maven module
    commons-vfs2-hdfs
---
 commons-vfs2-hdfs/pom.xml                          | 214 +++++++++++++++++++++
 .../vfs2/provider/hdfs/HdfsFileAttributes.java     |   0
 .../provider/hdfs/HdfsFileContentInfoFactory.java  |   0
 .../commons/vfs2/provider/hdfs/HdfsFileObject.java |   0
 .../vfs2/provider/hdfs/HdfsFileProvider.java       |   0
 .../commons/vfs2/provider/hdfs/HdfsFileSystem.java |   0
 .../provider/hdfs/HdfsFileSystemConfigBuilder.java |   0
 .../provider/hdfs/HdfsRandomAccessContent.java     |   0
 .../commons/vfs2/provider/hdfs/package-info.java   |   0
 .../vfs2/provider/hdfs/HdfsFileProviderTest.java   |   1 +
 .../provider/hdfs/HdfsFileProviderTestCase.java    |   8 +-
 commons-vfs2/pom.xml                               |  43 -----
 .../org/apache/commons/vfs2/FileSystemOptions.java |   1 -
 .../org/apache/commons/vfs2/impl/providers.xml     |   1 +
 pom.xml                                            |  17 +-
 src/changes/changes.xml                            |   3 +
 16 files changed, 237 insertions(+), 51 deletions(-)

diff --git a/commons-vfs2-hdfs/pom.xml b/commons-vfs2-hdfs/pom.xml
new file mode 100644
index 00000000..94c36e35
--- /dev/null
+++ b/commons-vfs2-hdfs/pom.xml
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+   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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.commons</groupId>
+    <artifactId>commons-vfs2-project</artifactId>
+    <version>2.10.0-SNAPSHOT</version>
+    <relativePath>../</relativePath>
+  </parent>
+
+  <name>Apache Commons VFS HDFS</name>
+  <artifactId>commons-vfs2-hdfs</artifactId>
+  <description>Apache Commons VFS is a Virtual File System library - Apache Hadoop HDFS provider.</description>
+
+  <dependencies>
+
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-vfs2</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdfs-client</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-common</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdfs</artifactId>
+    </dependency>
+    <dependency>
+       <groupId>org.apache.commons</groupId>
+       <artifactId>commons-vfs2</artifactId>
+       <type>test-jar</type>
+       <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.vintage</groupId>
+      <artifactId>junit-vintage-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <!-- Test HDFS with Apache Hadoop -->
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-common</artifactId>
+      <type>test-jar</type>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
+         <!-- VFS-606 - tools.jar not available in Java 9
+              This exclusion can be removed after upgrading Hadoop
+              to 2.7.1 or later  
+          -->
+          <groupId>jdk.tools</groupId>
+          <artifactId>jdk.tools</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdfs</artifactId>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <properties>
+    <vfs.parent.dir>${basedir}/..</vfs.parent.dir>
+    <commons.packageId>vfs2-jackrabbit2</commons.packageId>
+    <commons.module.name>org.apache.commons.vfs2.hdfs</commons.module.name>
+    <commons.osgi.import>
+    </commons.osgi.import>
+  </properties>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>${project.basedir}/src/main/resources</directory>
+      </resource>
+      <resource>
+        <directory>${vfs.parent.dir}</directory>
+        <targetPath>META-INF</targetPath>
+        <includes>
+          <include>NOTICE.txt</include>
+          <include>LICENSE.txt</include>
+        </includes>
+      </resource>
+    </resources>
+     <!-- include NOTICE/LICENSE in generated test jar -->
+    <testResources>
+      <testResource>
+        <directory>${project.basedir}/src/test/resources</directory>
+      </testResource>
+      <testResource>
+        <directory>${vfs.parent.dir}</directory>
+        <targetPath>META-INF</targetPath>
+        <includes>
+          <include>NOTICE.txt</include>
+          <include>LICENSE.txt</include>
+        </includes>
+      </testResource>
+    </testResources>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <!-- surfire do not honor suite(), see MSUREFIRE-131 why our tests wont work with maven 2 -->
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <systemPropertyVariables>
+            <test.basedir>target/test-classes/test-data</test.basedir>
+            <test.basedir.res>test-data</test.basedir.res>
+            <derby.stream.error.file>target/derby.log</derby.stream.error.file>
+          </systemPropertyVariables>
+          <excludes>
+            <!-- Need to port fully to JUnit 4 or 5. -->
+            <!-- *Tests.java files with @Test methods should not be run since these classes are in fact JUnit 3 classes used in custom JUnit 3 test suites. -->
+            <exclude>**/*Tests.java</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+      <plugin>
+		<!-- Remove after 2.10.0 -->
+        <groupId>com.github.siom79.japicmp</groupId>
+        <artifactId>japicmp-maven-plugin</artifactId>
+        <configuration>
+          <oldVersion>
+            <dependency>
+              <groupId>org.apache.commons</groupId>
+              <artifactId>commons-vfs2</artifactId>
+              <version>${commons.bc.version}</version>
+              <type>jar</type>
+            </dependency>
+          </oldVersion>
+          <parameter>
+            <includes>
+              <!--  Package moved to new module here -->
+              <include>org.apache.commons.vfs2.provider.hdfs</include>
+            </includes>
+          </parameter>
+          <dependencies>
+            <dependency>
+              <groupId>org.apache.commons</groupId>
+              <artifactId>commons-collections4</artifactId>
+              <version>${collections4.version}</version>
+            </dependency>
+            <dependency>
+              <groupId>com.jcraft</groupId>
+              <artifactId>jsch</artifactId>
+             <version>${jsch.version}</version>
+            </dependency>
+            <dependency>
+              <groupId>ant</groupId>
+              <artifactId>ant</artifactId>
+             <version>${ant.version}</version>
+            </dependency>
+            <dependency>
+              <groupId>commons-httpclient</groupId>
+              <artifactId>commons-httpclient</artifactId>
+             <version>${httpclient3.version}</version>
+            </dependency>
+		  </dependencies>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileAttributes.java b/commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileAttributes.java
similarity index 100%
rename from commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileAttributes.java
rename to commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileAttributes.java
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileContentInfoFactory.java b/commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileContentInfoFactory.java
similarity index 100%
rename from commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileContentInfoFactory.java
rename to commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileContentInfoFactory.java
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileObject.java b/commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileObject.java
similarity index 100%
rename from commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileObject.java
rename to commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileObject.java
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProvider.java b/commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProvider.java
similarity index 100%
rename from commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProvider.java
rename to commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProvider.java
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileSystem.java b/commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileSystem.java
similarity index 100%
rename from commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileSystem.java
rename to commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileSystem.java
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileSystemConfigBuilder.java b/commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileSystemConfigBuilder.java
similarity index 100%
rename from commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileSystemConfigBuilder.java
rename to commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileSystemConfigBuilder.java
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsRandomAccessContent.java b/commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsRandomAccessContent.java
similarity index 100%
rename from commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsRandomAccessContent.java
rename to commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/HdfsRandomAccessContent.java
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/package-info.java b/commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/package-info.java
similarity index 100%
rename from commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs/package-info.java
rename to commons-vfs2-hdfs/src/main/java/org/apache/commons/vfs2/provider/hdfs/package-info.java
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTest.java b/commons-vfs2-hdfs/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTest.java
similarity index 99%
rename from commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTest.java
rename to commons-vfs2-hdfs/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTest.java
index 2473a778..7edf5b21 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTest.java
+++ b/commons-vfs2-hdfs/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTest.java
@@ -105,6 +105,7 @@ public class HdfsFileProviderTest {
 
     @BeforeAll
     public static void setUp() throws Exception {
+        System.setProperty("test.basedir", "../commons-vfs2/target/test-classes/test-data");
         Logger.getRootLogger().setLevel(Level.ERROR);
 
         // Put the MiniDFSCluster directory in the target directory
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTestCase.java b/commons-vfs2-hdfs/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTestCase.java
similarity index 90%
rename from commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTestCase.java
rename to commons-vfs2-hdfs/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTestCase.java
index d1d9b953..3468d234 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTestCase.java
+++ b/commons-vfs2-hdfs/src/test/java/org/apache/commons/vfs2/provider/hdfs/HdfsFileProviderTestCase.java
@@ -20,8 +20,10 @@ import static org.apache.commons.vfs2.VfsTestUtils.getTestDirectoryFile;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Objects;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.file.PathUtils;
 import org.apache.commons.vfs2.AbstractProviderTestConfig;
 import org.apache.commons.vfs2.FileObject;
 import org.apache.commons.vfs2.FileSystemManager;
@@ -60,7 +62,10 @@ public class HdfsFileProviderTestCase extends AbstractProviderTestConfig {
 
         @SuppressWarnings("deprecation")
         private void copyTestResources(final File directory, final Path parent) throws Exception {
-            for (final File file : directory.listFiles()) {
+            final File[] listFiles = Objects.requireNonNull(Objects.requireNonNull(directory, "directory").listFiles(),
+                    () -> directory.toString() + " no data, directory exists: " + directory.exists() + ", current: " + PathUtils.current().toAbsolutePath().normalize());
+            Assertions.assertNotNull(directory, directory::toString);
+            for (final File file : listFiles) {
                 if (file.isFile()) {
                     final Path src = new Path(file.getAbsolutePath());
                     final Path dst = new Path(parent, file.getName());
@@ -80,6 +85,7 @@ public class HdfsFileProviderTestCase extends AbstractProviderTestConfig {
         @SuppressWarnings("deprecation")
         @Override
         protected void setUp() throws Exception {
+            System.setProperty("test.basedir", "../commons-vfs2/target/test-classes/test-data");
             Logger.getRootLogger().setLevel(Level.OFF);
 
             // Put the MiniDFSCluster directory in the target directory
diff --git a/commons-vfs2/pom.xml b/commons-vfs2/pom.xml
index 3bd63959..604138b4 100644
--- a/commons-vfs2/pom.xml
+++ b/commons-vfs2/pom.xml
@@ -58,21 +58,6 @@
       <artifactId>commons-collections4</artifactId>
       <optional>true</optional>
     </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-hdfs-client</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-common</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-hdfs</artifactId>
-      <optional>true</optional>
-    </dependency>
     <dependency>
       <groupId>commons-httpclient</groupId>
       <artifactId>commons-httpclient</artifactId>
@@ -160,34 +145,6 @@
       <artifactId>httpcore-nio</artifactId>
       <scope>test</scope>
     </dependency>
-    <!-- Test HDFS with Apache Hadoop -->
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-common</artifactId>
-      <type>test-jar</type>
-      <scope>test</scope>
-      <exclusions>
-        <exclusion>
-         <!-- VFS-606 - tools.jar not available in Java 9
-              This exclusion can be removed after upgrading Hadoop
-              to 2.7.1 or later  
-          -->
-          <groupId>jdk.tools</groupId>
-          <artifactId>jdk.tools</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-hdfs</artifactId>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.ws.rs</groupId>
-      <artifactId>jsr311-api</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
 
   <properties>
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemOptions.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemOptions.java
index 850332be..e52db34c 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemOptions.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemOptions.java
@@ -36,7 +36,6 @@ import java.util.TreeMap;
  * @see org.apache.commons.vfs2.impl.DefaultFileSystemConfigBuilder
  * @see org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder
  * @see org.apache.commons.vfs2.provider.ftps.FtpsFileSystemConfigBuilder
- * @see org.apache.commons.vfs2.provider.hdfs.HdfsFileSystemConfigBuilder
  * @see org.apache.commons.vfs2.provider.http.HttpFileSystemConfigBuilder
  * @see org.apache.commons.vfs2.provider.ram.RamFileSystemConfigBuilder
  * @see org.apache.commons.vfs2.provider.res.ResourceFileSystemConfigBuilder
diff --git a/commons-vfs2/src/main/resources/org/apache/commons/vfs2/impl/providers.xml b/commons-vfs2/src/main/resources/org/apache/commons/vfs2/impl/providers.xml
index 10c35ec7..dfaad344 100644
--- a/commons-vfs2/src/main/resources/org/apache/commons/vfs2/impl/providers.xml
+++ b/commons-vfs2/src/main/resources/org/apache/commons/vfs2/impl/providers.xml
@@ -148,6 +148,7 @@
     <provider class-name="org.apache.commons.vfs2.provider.hdfs.HdfsFileProvider">
         <scheme name="hdfs"/>
         <if-available class-name="org.apache.hadoop.fs.FileSystem"/>
+        <if-available class-name="org.apache.commons.vfs2.provider.hdfs.HdfsFileSystem"/>
     </provider>
 
     <extension-map extension="zip" scheme="zip"/>
diff --git a/pom.xml b/pom.xml
index 197e4bb8..9a6e7126 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,6 +36,7 @@
 
   <modules>
     <module>commons-vfs2</module>
+    <module>commons-vfs2-hdfs</module>
     <module>commons-vfs2-jackrabbit1</module>
     <module>commons-vfs2-jackrabbit2</module>
     <module>commons-vfs2-examples</module>
@@ -194,6 +195,10 @@
     <commons.asm.version>9.4</commons.asm.version>
     <slf4j.version>1.7.36</slf4j.version>
     <log4j2.version>2.20.0</log4j2.version>
+    <collections4.version>4.4</collections4.version>
+    <jsch.version>0.1.55</jsch.version>
+    <httpclient3.version>3.1</httpclient3.version>
+    <ant.version>1.6.5</ant.version>
     <!-- For VFS, somehow, SPDX >= 0.6.0 requires Java 11 (maybe because it's a multi-module project). -->
     <commons.spdx.version>0.5.5</commons.spdx.version>
 
@@ -339,7 +344,7 @@
             </overrideCompatibilityChangeParameters>
             <excludes>
               <!--  Package moved to new module -->
-              <exclude>org.apache.commons.vfs2.provider.webdav</exclude>
+              <exclude>org.apache.commons.vfs2.provider.hdfs</exclude>
             </excludes>
           </parameter>
         </configuration>
@@ -414,7 +419,7 @@
             </overrideCompatibilityChangeParameters>
             <excludes>
               <!--  Package moved to new module -->
-              <exclude>org.apache.commons.vfs2.provider.webdav</exclude>
+              <exclude>org.apache.commons.vfs2.provider.hdfs</exclude>
             </excludes>
           </parameter>
         </configuration>
@@ -483,12 +488,12 @@
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-collections4</artifactId>
-        <version>4.4</version>
+        <version>${collections4.version}</version>
       </dependency>
       <dependency>
         <groupId>commons-httpclient</groupId>
         <artifactId>commons-httpclient</artifactId>
-        <version>3.1</version>
+        <version>${httpclient3.version}</version>
       </dependency>
       <dependency>
         <groupId>org.apache.httpcomponents</groupId>
@@ -513,12 +518,12 @@
       <dependency>
         <groupId>ant</groupId>
         <artifactId>ant</artifactId>
-        <version>1.6.5</version>
+        <version>${ant.version}</version>
       </dependency>
       <dependency>
         <groupId>com.jcraft</groupId>
         <artifactId>jsch</artifactId>
-        <version>0.1.55</version>
+        <version>${jsch.version}</version>
       </dependency>
       <dependency>
         <groupId>jcifs</groupId>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index c8e5f8d0..f346f4bf 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -52,6 +52,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action type="fix" issue="VFS-848" dev="ggregory" due-to="beise, Gary Gregory">
         Config option for trailing slash in webdav URI #425.
       </action>
+      <action type="fix" issue="VFS-851" dev="ggregory" due-to="Gary Gregory">
+        Split out HDFS provider into its own Maven module commons-vfs2-hdfs.
+      </action>
       <!-- FIX -->
       <action type="fix" dev="ggregory" due-to="Seth Falco">
         Replace package.html with package-info.java #206.