diff --git a/Jenkinsfile.karaf.jdk16 b/Jenkinsfile.karaf.jdk16
deleted file mode 100644
index ab7e0ba..0000000
--- a/Jenkinsfile.karaf.jdk16
+++ /dev/null
@@ -1,89 +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.
- */
-
-def LOCAL_REPOSITORY = env.LOCAL_REPOSITORY ?: '/home/jenkins/jenkins-slave/maven-repositories/0'
-def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu'
-def JDK_NAME = env.JDK_NAME ?: 'jdk_16_latest'
-
-def MAVEN_PARAMS = '-U -B -e -fae -V -Dmaven.repo.local=/home/jenkins/.m2/repository -Dmaven.compiler.fork=true'
-
-def karaf_itests_result
-
-pipeline {
-
-    agent {
-        label AGENT_LABEL
-    }
-
-    triggers {
-        cron('@daily')
-    }
-
-    tools {
-        jdk JDK_NAME
-    }
-
-    environment {
-        MAVEN_SKIP_RC = true
-    }
-
-    options {
-        buildDiscarder(
-            logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10')
-        )
-        disableConcurrentBuilds()
-    }
-
-    parameters {
-        booleanParam(name: 'CLEAN', defaultValue: true, description: 'Perform the build in clean workspace')
-    }
-
-    stages {
-
-        stage('Clean workspace') {
-             when {
-                 expression { params.CLEAN }
-             }
-             steps {
-                 sh 'git clean -fdx'
-           }
-        }
-
-        stage('Build') {
-            steps {
-                script {
-                    karaf_itests_result = sh script: "./mvnw $MAVEN_PARAMS -Dmaven.test.failure.ignore=true -Parchetypes-skip-tests clean install", returnStatus: true
-                }
-            }
-            post {
-                always {
-                    junit allowEmptyResults: true, testResults: '**/target/surefire-reports/*.xml'
-                }
-            }
-        }
-    }
-
-    post {
-        always {
-            script {
-                currentBuild.result = karaf_itests_result == 0 ? 'SUCCESS' : 'FAILURE'
-            }
-        }
-    }
-}
