# 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.
version: 2
updates:
  - package-ecosystem: "maven"
    directory: "/"
    schedule:
      interval: "daily"
    ignore:
      # 1.7 is the last version to support Java 8.
      - dependency-name: "com.google.googlejavaformat:google-java-format"
        versions:
        - ">= 1.8"
      - dependency-name: "com.sun.activation:jakarta.activation"
        versions:
        - ">= 1.2.2"
      - dependency-name: "com.sun.mail:jakarta.mail"
        versions:
        - ">= 2.0"
      - dependency-name: "com.sun.xml.messaging.saaj:saaj-impl"
        versions:
        - ">= 2.0"
      - dependency-name: "com.sun.xml.ws:*"
        versions:
        - ">= 3.0"
      # IO-734
      - dependency-name: "commons-io:commons-io"
        versions:
        - "2.9.0"
      - dependency-name: "jakarta.activation:jakarta.activation-api"
        versions:
        - ">= 1.2.2"
      - dependency-name: "jakarta.servlet.jsp:jakarta.servlet.jsp-api"
        versions:
        - ">= 3.0"
      - dependency-name: "jakarta.xml.bind:jakarta.xml.bind-api"
        versions:
        - ">= 3.0"
      - dependency-name: "jakarta.xml.soap:jakarta.xml.soap-api"
        versions:
        - ">= 2.0"
      - dependency-name: "jakarta.xml.ws:jakarta.xml.ws-api"
        versions:
        - ">= 3.0"
      # Jetty 9 supports Servlets 3.1.
      - dependency-name: "javax.servlet:javax.servlet-api"
        versions:
        - "> 3.1.0"
      - dependency-name: "javax.xml.bind:jaxb-api"
        versions:
        - ">= 3.0"
      # Embedding Qpid is a pain and APIs have changed a lot over time. We don't try to keep up with
      # these changes. It's only used for integration tests anyway.
      - dependency-name: "org.apache.qpid:*"
      - dependency-name: "org.eclipse.jetty:*"
        versions:
        - ">= 11.0"
      - dependency-name: "org.glassfish.jaxb:*"
        versions:
        - ">= 3.0"
      # Don't upgrade Rhino unless somebody is willing to figure out the necessary code changes.
      - dependency-name: "rhino:js"
      # maven-plugin-plugin 3.6.2 is affected by MPLUGIN-384
      - dependency-name: "org.apache.maven.plugins:maven-plugin-plugin"
        versions:
        - "3.6.2"
    open-pull-requests-limit: 15
