diff --git a/Jenkinsfile b/Jenkinsfile
index 688aa95..1186e4e 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -15,121 +15,119 @@
   }
   stages {
     stage('Build on various JDKs') {
-      parallel {
-        stage('JDK 11') {
-          agent {
-            docker {
-              label 'ubuntu'
-              image 'maven:3-jdk-11'
-              args "$dockerArgs"
-              reuseNode true
+      stage('JDK 11') {
+        agent {
+          docker {
+            label 'ubuntu'
+            image 'maven:3-jdk-11'
+            args "$dockerArgs"
+            reuseNode true
+          }
+        }
+        stages {
+          stage('Build') {
+            steps {
+              sh 'mvn -B clean package -DskipTests -DskipAssembly'
             }
           }
-          stages {
-            stage('Build') {
-              steps {
-                sh 'mvn -B clean package -DskipTests -DskipAssembly'
-              }
+          stage('Test') {
+            steps {
+              sh 'mvn -B test'
+              step([$class: 'JiraIssueUpdater', issueSelector: [$class: 'DefaultIssueSelector'], scm: scm])
             }
-            stage('Test') {
-              steps {
-                sh 'mvn -B test'
-                step([$class: 'JiraIssueUpdater', issueSelector: [$class: 'DefaultIssueSelector'], scm: scm])
-              }
-              post {
-                always {
-                  junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
-                  junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
-                }
+            post {
+              always {
+                junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
+                junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
               }
             }
           }
         }
-        stage('JDK 9') {
-          agent {
-            docker {
-              label 'ubuntu'
-              image 'maven:3-jdk-9'
-              args "$dockerArgs"
-              reuseNode true
+      }
+      stage('JDK 9') {
+        agent {
+          docker {
+            label 'ubuntu'
+            image 'maven:3-jdk-9'
+            args "$dockerArgs"
+            reuseNode true
+          }
+        }
+        stages {
+          stage('Build') {
+            steps {
+              sh 'mvn -B clean package -DskipTests -DskipAssembly'
             }
           }
-          stages {
-            stage('Build') {
-              steps {
-                sh 'mvn -B clean package -DskipTests -DskipAssembly'
-              }
+          stage('Test') {
+            steps {
+              sh 'mvn -B test'
+              step([$class: 'JiraIssueUpdater', issueSelector: [$class: 'DefaultIssueSelector'], scm: scm])
             }
-            stage('Test') {
-              steps {
-                sh 'mvn -B test'
-                step([$class: 'JiraIssueUpdater', issueSelector: [$class: 'DefaultIssueSelector'], scm: scm])
-              }
-              post {
-                always {
-                  junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
-                  junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
-                }
+            post {
+              always {
+                junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
+                junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
               }
             }
           }
         }
-        stage('JDK 8') {
-          agent {
-            docker {
-              label 'ubuntu'
-              image 'maven:3-jdk-8'
-              args "$dockerArgs"
-              reuseNode true
+      }
+      stage('JDK 8') {
+        agent {
+          docker {
+            label 'ubuntu'
+            image 'maven:3-jdk-8'
+            args "$dockerArgs"
+            reuseNode true
+          }
+        }
+        stages {
+          stage('Build') {
+            steps {
+              sh 'mvn -B clean package -DskipTests -DskipAssembly'
             }
           }
-          stages {
-            stage('Build') {
-              steps {
-                sh 'mvn -B clean package -DskipTests -DskipAssembly'
+          stage('Test') {
+            steps {
+              sh 'mvn -B test'
+              step([$class: 'JiraIssueUpdater', issueSelector: [$class: 'DefaultIssueSelector'], scm: scm])
+            }
+            post {
+              always {
+                junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
+                junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
               }
             }
-            stage('Test') {
-              steps {
-                sh 'mvn -B test'
-                step([$class: 'JiraIssueUpdater', issueSelector: [$class: 'DefaultIssueSelector'], scm: scm])
+          }
+          stage('Build Source & JavaDoc') {
+            when {
+              branch 'master'
+            }
+            steps {
+              dir("local-snapshots-dir/") {
+                deleteDir()
               }
-              post {
-                always {
-                  junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
-                  junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
-                }
+              sh 'mvn -B source:jar javadoc:jar -DskipAssembbly'
+            }
+          }
+          stage('Deploy Snapshot') {
+            when {
+              branch 'master'
+            }
+            steps {
+              withCredentials([file(credentialsId: 'struts-custom-settings_xml', variable: 'CUSTOM_SETTINGS')]) {
+                sh 'mvn -s \${CUSTOM_SETTINGS} deploy -skipAssembly'
               }
             }
-            stage('Build Source & JavaDoc') {
-              when {
-                branch 'master'
-              }
-              steps {
-                dir("local-snapshots-dir/") {
-                  deleteDir()
-                }
-                sh 'mvn -B source:jar javadoc:jar -DskipAssembbly'
-              }
+          }
+          stage('Code Quality') {
+            when {
+              branch 'master'
             }
-            stage('Deploy Snapshot') {
-              when {
-                branch 'master'
-              }
-              steps {
-                withCredentials([file(credentialsId: 'struts-custom-settings_xml', variable: 'CUSTOM_SETTINGS')]) {
-                  sh 'mvn -s \${CUSTOM_SETTINGS} deploy -skipAssembly'
-                }
-              }
-            }
-            stage('Code Quality') {
-              when {
-                branch 'master'
-              }
-              steps {
-                withCredentials([string(credentialsId: 'asf-struts-sonarcloud', variable: 'SONARCLOUD_TOKEN')]) {
-                  sh 'mvn sonar:sonar -DskipAssembly -Dsonar.projectKey=apache_struts -Dsonar.organization=apache -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${SONARCLOUD_TOKEN}'
-                }
+            steps {
+              withCredentials([string(credentialsId: 'asf-struts-sonarcloud', variable: 'SONARCLOUD_TOKEN')]) {
+                sh 'mvn sonar:sonar -DskipAssembly -Dsonar.projectKey=apache_struts -Dsonar.organization=apache -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${SONARCLOUD_TOKEN}'
               }
             }
           }
