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 6daedb3..f9c265e 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;