diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..a36a18b
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,22 @@
+name: build
+
+on: [push]
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        java: ['8', '11', '17']
+    name: JDK ${{ matrix.java }}
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up JDK
+      uses: actions/setup-java@v2
+      with:
+        java-version: ${{ matrix.java }}
+        distribution: 'temurin'
+        cache: 'maven'
+    - name: Build with Maven
+      run: mvn --batch-mode --update-snapshots verify
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 547d93e..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: java
-sudo: false
-jdk:
-  - openjdk8
-notifications:
-  email:
-    - info@sejda.org
diff --git a/README.md b/README.md
index d0a365b..8e36212 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 Sejda-io (http://www.sejda.org)
 =====
-[![Build Status](https://travis-ci.org/torakiki/sejda-io.png)](https://travis-ci.org/torakiki/sejda-io)
+![Build Status](https://github.com/torakiki/sejda-io/actions/workflows/build.yml/badge.svg)
 [![License](http://img.shields.io/badge/license-APLv2-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0.html)
 
 A layer of Input/Output classes built on top of java io and nio.
diff --git a/debian/changelog b/debian/changelog
index f619cb9..2d46eec 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+libsejda-io-java (2.1.3+git20211227.1.043d3af-1) UNRELEASED; urgency=low
+
+  * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Tue, 05 Apr 2022 03:40:20 -0000
+
 libsejda-io-java (2.1.3-1) unstable; urgency=medium
 
   * New upstream version 2.1.3.
diff --git a/pom.xml b/pom.xml
index cb3c852..e146e2c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
 	<artifactId>sejda-io</artifactId>
 	<packaging>jar</packaging>
 	<name>sejda-io</name>
-	<version>2.1.3</version>
+	<version>2.1.4-SNAPSHOT</version>
 
 	<description>An Input/Output layer built on top of Java standard io and nio packages</description>
 	<url>http://www.sejda.org</url>
@@ -37,7 +37,7 @@
 		<connection>scm:git:git@github.com:torakiki/sejda-io.git</connection>
 		<developerConnection>scm:git:git@github.com:torakiki/sejda-io.git</developerConnection>
 		<url>scm:git:git@github.com:torakiki/sejda-io.git</url>
-		<tag>v2.1.3</tag>
+		<tag>HEAD</tag>
 	</scm>
 
 	<developers>
@@ -104,7 +104,7 @@
 					<plugin>
 						<groupId>org.apache.maven.plugins</groupId>
 						<artifactId>maven-javadoc-plugin</artifactId>
-						<version>3.0.1</version>
+						<version>3.3.1</version>
 						<executions>
 							<execution>
 								<id>attach-javadocs</id>
@@ -122,7 +122,7 @@
 					<plugin>
 						<groupId>org.apache.maven.plugins</groupId>
 						<artifactId>maven-release-plugin</artifactId>
-						<version>2.5.3</version>
+						<version>3.0.0-M4</version>
 						<configuration>
 							<tagNameFormat>v@{project.version}</tagNameFormat>
 							<preparationGoals>clean install</preparationGoals>
@@ -131,7 +131,7 @@
 					<plugin>
 						<groupId>org.apache.maven.plugins</groupId>
 						<artifactId>maven-gpg-plugin</artifactId>
-						<version>1.6</version>
+						<version>3.0.1</version>
 						<executions>
 							<execution>
 								<id>sign-artifacts</id>
@@ -172,7 +172,7 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
-				<version>3.1.2</version>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
 						<manifestEntries>
@@ -184,7 +184,7 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-source-plugin</artifactId>
-				<version>3.1.0</version>
+				<version>3.2.0</version>
 				<executions>
 					<execution>
 						<id>attach-sources</id>
@@ -197,7 +197,7 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-surefire-plugin</artifactId>
-				<version>3.0.0-M3</version>
+				<version>3.0.0-M5</version>
 			</plugin>
 		</plugins>
 	</build>
@@ -205,41 +205,41 @@
 		<dependency>
 			<groupId>org.slf4j</groupId>
 			<artifactId>slf4j-api</artifactId>
-			<version>1.7.28</version>
+			<version>1.7.32</version>
 		</dependency>
 		<dependency>
 			<groupId>org.sejda</groupId>
 			<artifactId>sejda-commons</artifactId>
-			<version>1.1.0</version>
+			<version>1.1.7</version>
 		</dependency>
 		<dependency>
 			<groupId>ch.qos.logback</groupId>
 			<artifactId>logback-classic</artifactId>
-			<version>1.2.3</version>
+			<version>1.2.9</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>ch.qos.logback</groupId>
 			<artifactId>logback-core</artifactId>
-			<version>1.2.3</version>
+			<version>1.2.9</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.mockito</groupId>
 			<artifactId>mockito-core</artifactId>
-			<version>3.0.0</version>
+			<version>4.1.0</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.junit.jupiter</groupId>
 			<artifactId>junit-jupiter-engine</artifactId>
-			<version>5.5.1</version>
+			<version>5.8.2</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.hamcrest</groupId>
 			<artifactId>hamcrest-library</artifactId>
-			<version>2.1</version>
+			<version>2.2</version>
 			<scope>test</scope>
 		</dependency>
 	</dependencies>
diff --git a/src/main/java/org/sejda/io/BufferedCountingChannelWriter.java b/src/main/java/org/sejda/io/BufferedCountingChannelWriter.java
index 23c1257..3437fbd 100644
--- a/src/main/java/org/sejda/io/BufferedCountingChannelWriter.java
+++ b/src/main/java/org/sejda/io/BufferedCountingChannelWriter.java
@@ -63,7 +63,7 @@ public class BufferedCountingChannelWriter implements Closeable {
     }
 
     /**
-     * Writes the given string in {@link Charsets#ISO_8859_1}
+     * Writes the given string in {@link StandardCharsets#ISO_8859_1}
      * 
      * @param value
      * @throws IOException
diff --git a/src/main/java/org/sejda/io/SeekableSources.java b/src/main/java/org/sejda/io/SeekableSources.java
index 44c5d9b..ac94deb 100644
--- a/src/main/java/org/sejda/io/SeekableSources.java
+++ b/src/main/java/org/sejda/io/SeekableSources.java
@@ -21,7 +21,6 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.Files;
-import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
 
 import org.sejda.commons.util.IOUtils;
diff --git a/src/test/java/org/sejda/io/FileChannelSeekableSourceTest.java b/src/test/java/org/sejda/io/FileChannelSeekableSourceTest.java
index 01603c0..f837a2c 100644
--- a/src/test/java/org/sejda/io/FileChannelSeekableSourceTest.java
+++ b/src/test/java/org/sejda/io/FileChannelSeekableSourceTest.java
@@ -15,6 +15,11 @@
  */
 package org.sejda.io;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -26,19 +31,15 @@ import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.*;
-
 /**
  * @author Andrea Vacondio
  */
-public class FileChannelSeekableSourceTest extends BaseTestSeekableSource
-{
+public class FileChannelSeekableSourceTest extends BaseTestSeekableSource {
     private FileChannelSeekableSource victim;
     private Path tempFile;
 
     @BeforeEach
-    public void setUp() throws Exception
-    {
+    public void setUp() throws Exception {
         tempFile = Files.createTempFile("SejdaIO", null);
         Files.copy(getClass().getResourceAsStream("/pdf/simple_test.pdf"), tempFile,
                 StandardCopyOption.REPLACE_EXISTING);
@@ -46,22 +47,19 @@ public class FileChannelSeekableSourceTest extends BaseTestSeekableSource
     }
 
     @AfterEach
-    public void after() throws IOException
-    {
+    public void after() throws IOException {
         Files.deleteIfExists(tempFile);
     }
 
     @Test
-    public void failingConstructor()
-    {
+    public void failingConstructor() {
         assertThrows(IllegalArgumentException.class, () -> {
             new FileChannelSeekableSource(null);
         }, "Input file cannot be null");
     }
 
     @Test
-    public void read() throws IOException
-    {
+    public void read() throws IOException {
         assertEquals(0, victim.position());
         assertNotNull(victim.read());
         assertNotNull(victim.read());
@@ -71,8 +69,7 @@ public class FileChannelSeekableSourceTest extends BaseTestSeekableSource
     }
 
     @Test
-    public void readBuff() throws IOException
-    {
+    public void readBuff() throws IOException {
         ByteBuffer dst = ByteBuffer.allocate(20);
         victim.read(dst);
         dst.flip();
@@ -86,8 +83,7 @@ public class FileChannelSeekableSourceTest extends BaseTestSeekableSource
     }
 
     @Test
-    public void reset() throws IOException
-    {
+    public void reset() throws IOException {
         ByteBuffer dst = ByteBuffer.allocate(20);
         victim.read(dst);
         assertEquals(20, victim.position());
@@ -96,8 +92,7 @@ public class FileChannelSeekableSourceTest extends BaseTestSeekableSource
     }
 
     @Test
-    public void newInputStream() throws IOException
-    {
+    public void newInputStream() throws IOException {
         int length = 20;
         byte[] buffer1 = new byte[length];
         byte[] buffer2 = new byte[length];
@@ -110,8 +105,7 @@ public class FileChannelSeekableSourceTest extends BaseTestSeekableSource
     }
 
     @Override
-    SeekableSource victim()
-    {
+    SeekableSource victim() {
         return victim;
     }