diff --git a/.gitignore b/.gitignore
index 4ea327c..4bfa550 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,48 +1,3 @@
-# Package Files #
-*.jar
-*.war
-*.ear
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-# maven build outputs
+.idea/
+*.iml
target/
-
-# netbeans legacy
-nbproject/
-nbactions.xml
-
-# eclipse legacy
-.project
-
-# intellij
-.idea/libraries/
-.idea/workspace.xml
-.idea/uiDesigner.xml
-.idea/compiler.xml
-.idea/misc.xml
-.idea/checkstyle.xml
-.idea/artifacts/
-.idea/dataSources*
-.idea/tasks.xml
-.idea/dictionaries/
-.idea/shelf/
-.idea/dynamic.xml
-.idea/sqlDataSources.xml
-.idea/gradle.xml
-.idea/mongoSettings.xml
-
-# Spring
-spring.log
-logs/
-/application.properties
-/bootstrap.properties
-
-# Composer-style
-vendor
-
-# Git and temp files
-*.orig
-*.patch
-*~
diff --git a/.travis.yml b/.travis.yml
index 7a1d0fd..65b9122 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,8 @@
language: java
jdk:
- - oraclejdk8
-after_success:
- - mvn clean test jacoco:report coveralls:report
+- oraclejdk8
+cache:
+ directories:
+ - "$HOME/.m2"
+install: true
+script: "mvn -B -U clean install"
diff --git a/Jenkinsfile.groovy b/Jenkinsfile.groovy
new file mode 100644
index 0000000..f9bfea5
--- /dev/null
+++ b/Jenkinsfile.groovy
@@ -0,0 +1,104 @@
+final String publicRepo = 'https://github.com/kemitix/'
+final String mvn = "mvn --batch-mode --update-snapshots --errors"
+final dependenciesSupportJDK = 10
+
+pipeline {
+ agent any
+ stages {
+ stage('Build & Test') {
+ steps {
+ withMaven(maven: 'maven', jdk: 'JDK 1.8') {
+ sh "${mvn} clean compile checkstyle:checkstyle pmd:pmd test"
+ // PMD to Jenkins
+ pmd canComputeNew: false, defaultEncoding: '', healthy: '', pattern: '', unHealthy: ''
+ }
+ }
+ }
+ stage('Report Coverage') {
+ steps {
+ withMaven(maven: 'maven', jdk: 'JDK 1.8') {
+ // Code Coverage to Jenkins
+ jacoco exclusionPattern: '**/*{Test|IT|Main|Application|Immutable}.class'
+ }
+ }
+ }
+ stage('Report Checkstyle') {
+ steps {
+ withMaven(maven: 'maven', jdk: 'JDK 1.8') {
+ // Checkstyle to Jenkins
+ step([$class: 'hudson.plugins.checkstyle.CheckStylePublisher',
+ pattern: '**/target/checkstyle-result.xml',
+ healthy:'20',
+ unHealthy:'100'])
+ }
+ }
+ }
+ stage('Verify & Install') {
+ steps {
+ withMaven(maven: 'maven', jdk: 'JDK 1.8') {
+ sh "${mvn} -DskipTests install"
+ }
+ }
+ }
+ stage('SonarQube (published)') {
+ when { expression { isPublished(publicRepo) } }
+ steps {
+ withSonarQubeEnv('sonarqube') {
+ withMaven(maven: 'maven', jdk: 'JDK 1.8') {
+ sh "${mvn} org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar"
+ }
+ }
+ }
+ }
+ stage('Deploy (published release branch)') {
+ when {
+ expression {
+ (isReleaseBranch() &&
+ isPublished(publicRepo) &&
+ notSnapshot())
+ }
+ }
+ steps {
+ withMaven(maven: 'maven', jdk: 'JDK 1.8') {
+ sh "${mvn} --activate-profiles release deploy"
+ }
+ }
+ }
+ stage('Build Java 9') {
+ when { expression { dependenciesSupportJDK >= 9 } }
+ steps {
+ withMaven(maven: 'maven', jdk: 'JDK 9') {
+ sh "${mvn} clean verify -Djava.version=9"
+ }
+ }
+ }
+ stage('Build Java 10') {
+ when { expression { dependenciesSupportJDK >= 10 } }
+ steps {
+ withMaven(maven: 'maven', jdk: 'JDK 10') {
+ sh "${mvn} clean verify -Djava.version=10"
+ }
+ }
+ }
+ }
+}
+
+private boolean isReleaseBranch() {
+ return branchStartsWith('release/')
+}
+
+private boolean branchStartsWith(final String branchName) {
+ startsWith(env.GIT_BRANCH, branchName)
+}
+
+private boolean isPublished(final String repo) {
+ startsWith(env.GIT_URL, repo)
+}
+
+private static boolean startsWith(final String value, final String match) {
+ value != null && value.startsWith(match)
+}
+
+private boolean notSnapshot() {
+ return !(readMavenPom(file: 'pom.xml').version).contains("SNAPSHOT")
+}
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 6d6f5e9..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Paul Campbell
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..7607e05
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,20 @@
+/**
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2018 Paul Campbell
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies
+ * or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+ * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
diff --git a/pom.xml b/pom.xml
index f6fdf24..36c4a04 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,8 +1,18 @@
- * The MIT License. - *
- * Copyright 2015 pcampbell. - *
- * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - *
- * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. */ package net.kemitix.wiser.assertions;