Merge branch 'master' into Move_to_GitHubActions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..48891d7
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,36 @@
+# The default behavior, which overrides 'core.autocrlf', is to use Git's
+# built-in heuristics to determine whether a particular file is text or binary.
+# Text files are automatically normalized to the user's platforms.
+* text=auto
+
+# Explicitly declare text files that should always be normalized and converted
+# to native line endings.
+.asf.yaml text
+.gitattributes text
+.gitignore text
+git.properties text
+.travis.yml text
+LICENSE text
+NOTICE text
+*.html text
+*.java text
+*.md text
+*.properties text
+*.sh text
+*.xml text
+*.yml text
+*.yaml text
+
+# Declare files that will always have CRLF line endings on checkout.
+
+# Explicitly denote all files that are truly binary and should not be modified.
+*.jpg binary
+*.png binary
+*.svg binary
+
+# Declare files that should be ignored when creating an archive of the git repository
+.asf.yaml export-ignore
+.gitattributes export-ignore
+.gitignore export-ignore
+.travis.yml export-ignore
+.github/ export-ignore
diff --git a/.github/workflows/.toolchains.xml b/.github/workflows/.toolchains.xml
new file mode 100644
index 0000000..a7d1161
--- /dev/null
+++ b/.github/workflows/.toolchains.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF8"?>
+<toolchains>
+    <toolchain>
+        <type>jdk</type>
+        <provides>
+            <version>8</version>
+            <vendor>openjdk</vendor>
+        </provides>
+        <configuration>
+            <jdkHome>${JAVA_HOME}</jdkHome>
+        </configuration>
+    </toolchain>
+</toolchains>
\ No newline at end of file
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
new file mode 100644
index 0000000..698d6c6
--- /dev/null
+++ b/.github/workflows/maven.yml
@@ -0,0 +1,53 @@
+name: Java Test Coverage with Maven, Coveralls
+
+on:
+    pull_request:
+    push:
+        branches: [ master ]
+
+env:
+    MAVEN_OPTS: -Xmx4g -Xms1g
+    repo_token: ${{secrets.coveralls_token}}
+
+jobs:
+    build:
+        name: Build, Test, Coverage
+        runs-on: ubuntu-latest
+        
+        steps:
+        - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
+          uses: actions/checkout@v2
+          with:
+              persist-credentials: false
+
+        - name: Cache local Maven repository
+          uses: actions/cache@v2
+          with:
+              path: ~/.m2/repository
+              key: build-${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+              restore-keys: build-${{ runner.os }}-maven-
+
+        - name: Install JDK
+          uses: AdoptOpenJDK/install-jdk@v1
+          with:
+              version: '8'
+              architecture: x64
+              impl: hotspot
+              targets: 'JDK_8;JAVA_HOME'
+
+        - name: Install Dependencies
+          run: >
+              mvn clean install -B -V -q
+              -DskipTests=true
+              -Dmaven.javadoc.skip=true
+              -Dgpg.skip=true
+              --toolchains .github/workflows/.toolchains.xml
+
+        - name: Test & Report
+          if: ${{ success() }}
+          run: >
+              mvn verify coveralls:report -B -V -q
+              -Dcoveralls-repo-token=${repo_token}
+              -Dmaven.javadoc.skip=true
+              -Dgpg.skip=true
+              --toolchains .github/workflows/.toolchains.xml
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 2883397..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-# 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.
-
-# http://docs.travis-ci.com/user/customizing-the-build/
-
-language: java
-
-dist: trusty
-
-jdk:
- - openjdk8
-
-install:
- - mvn clean install -q -Dmaven.javadoc.skip=true -Dsource.skip=true -DskipTests=true -Dgpg.skip=true
-
-before_script:
- - _JAVA_OPTIONS="-Xmx4g -Xms1g"
-
-script:
- - mvn clean compile test -q -Dgpg.skip=true
-
-after_success: 
- - mvn clean test jacoco:report coveralls:report -q -DrepoToken=$coveralls_token
-
-notifications:
-  email: false
-
-cache:
-  directories:
-  - .autoconf
-  - $HOME/.m2
diff --git a/pom.xml b/pom.xml
index b3447ce..c137b6c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,17 +30,14 @@
   </parent>
 
   <groupId>org.apache.datasketches</groupId>
-
-  <!-- UNIQUE FOR THIS JAVA COMPONENT -->
   <artifactId>datasketches-memory</artifactId>
   <version>1.4.0-SNAPSHOT</version>
-  <description>High-performance native memory access.</description>
-  <!-- END: UNIQUE FOR THIS JAVA COMPONENT -->
+  <packaging>jar</packaging>
 
-  <url>https://datasketches.apache.org/</url>
   <name>${project.artifactId}</name>
+  <description>High-performance native memory access.</description>
+  <url>https://datasketches.apache.org/</url>
   <inceptionYear>2015</inceptionYear>
-  <packaging>jar</packaging> <!-- jar is the default -->
 
   <mailingLists>
     <mailingList>
@@ -128,6 +125,7 @@
     <!-- org.jacoco Maven Plugins -->
     <jacoco-maven-plugin.version>0.8.6</jacoco-maven-plugin.version>
     <!-- org.eluder Maven Plugins -->
+    <coveralls-repo-token></coveralls-repo-token>
     <coveralls-maven-plugin.version>4.3.0</coveralls-maven-plugin.version>
     <!-- other -->
     <lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
@@ -231,12 +229,14 @@
           <executions>
             <execution>
               <id>default-jar</id>
+              <phase>package</phase>
               <goals>
                 <goal>jar</goal>
               </goals>
             </execution>
             <execution>
               <id>default-test-jar</id>
+              <phase>package</phase>
               <goals>
                 <goal>test-jar</goal>
               </goals>
@@ -309,7 +309,9 @@
             <useDefaultExcludes>true</useDefaultExcludes>
             <excludes>
               <!-- rat uses .gitignore for excludes by default -->
-              <exclude>.asf.yaml</exclude>
+              <exclude>**/*.yaml</exclude>
+              <exclude>**/*.yml</exclude>
+              <exclude>**/.*</exclude>
               <exclude>**/test/resources/**/*.txt</exclude>
               <exclude>LICENSE</exclude>
               <exclude>NOTICE</exclude>
@@ -356,11 +358,17 @@
           <version>${jacoco-maven-plugin.version}</version>
           <executions>
             <execution>
-              <id>prepare-agent</id>
+              <id>default-prepare-agent</id>
               <goals>
                 <goal>prepare-agent</goal>
               </goals>
             </execution>
+            <execution>
+              <id>default-report</id>
+              <goals>
+                <goal>report</goal>
+              </goals>
+            </execution> 
           </executions>
         </plugin>
         <plugin>
@@ -369,7 +377,7 @@
           <artifactId>coveralls-maven-plugin</artifactId>
           <version>${coveralls-maven-plugin.version}</version>
           <configuration>
-            <!-- Since we use Travis CI we do not have to put a Coveralls token here. -->
+            <repoToken>${coveralls-repo-token}</repoToken>
           </configuration>
         </plugin>
       </plugins>
@@ -472,7 +480,7 @@
             <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
-              <version>${maven-compiler-plugin.version}</version> <!-- 3.8.1 -->
+              <version>${maven-compiler-plugin.version}</version>
               <dependencies>
                 <dependency>
                   <groupId>org.codehaus.plexus</groupId>