# 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.

# list of plugins that did not produce reproducible output in the past, with minimum reproducible version

# default org.apache.maven.plugins groupId
maven-archetype-plugin=3.2.0
# https://issues.apache.org/jira/browse/ARCHETYPE-590
maven-assembly-plugin=3.2.0
# https://issues.apache.org/jira/browse/MASSEMBLY-921
maven-jar-plugin=3.2.0
# https://issues.apache.org/jira/browse/MJAR-263
# https://issues.apache.org/jira/browse/MJAR-275
maven-ejb-plugin=3.1.0
# https://issues.apache.org/jira/browse/MEJB-128
maven-plugin-plugin=3.5.1
# https://issues.apache.org/jira/browse/MPLUGIN-326
maven-remote-resources-plugin=1.7.0
# https://issues.apache.org/jira/browse/MRRESOURCES-114
maven-shade-plugin=3.2.3
# https://issues.apache.org/jira/browse/MSHADE-352
# https://issues.apache.org/jira/browse/MSHADE-420 for some shaded jars, timezone counts: does not really make the build not reproducible, just harder
maven-source-plugin=3.2.1
# https://issues.apache.org/jira/browse/MSOURCES-123
maven-war-plugin=3.3.1
# https://issues.apache.org/jira/browse/MWAR-432
maven-ear-plugin=3.1.0
# https://issues.apache.org/jira/browse/MEAR-280
maven-rar-plugin=3.0.0
# https://issues.apache.org/jira/browse/MRAR-86
maven-acr-plugin=3.2.0
# https://issues.apache.org/jira/browse/MACR-53

# plugin-specific groupId

org.antlr+antlr3-maven-plugin=fail:https://github.com/antlr/antlr3/pull/209

org.apache.felix+maven-bundle-plugin=5.1.9
# https://issues.apache.org/jira/browse/FELIX-6495
# https://issues.apache.org/jira/browse/FELIX-6496
# https://issues.apache.org/jira/browse/FELIX-6602
org.apache.karaf.tooling+karaf-maven-plugin=4.3.7
# https://issues.apache.org/jira/browse/KARAF-7367
org.apache.nifi+nifi-nar-maven-plugin=1.3.4
# https://issues.apache.org/jira/browse/NIFI-9857
org.apache.servicemix.tooling+depends-maven-plugin=1.5.0
# https://issues.apache.org/jira/browse/SM-5021

org.codehaus.plexus+plexus-component-metadata=2.1.0
# https://github.com/codehaus-plexus/plexus-containers/issues/27

# don't fail on one plugin for jaxb because plugin can be configured to avoid issue https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/doc/BUILDSPEC.md#avoiding-timestamps-in-jaxb-generated-content
# and other non-listed plugins using jaxb/xjc have same issues: failing at check-buildplan level just cause noise to users
#org.codehaus.mojo+jaxb2-maven-plugin=fail:https://github.com/mojohaus/jaxb2-maven-plugin

org.codehaus.mojo+properties-maven-plugin=1.1.0
# https://github.com/mojohaus/properties-maven-plugin/pull/75
#org.codehaus.mojo+flatten-maven-plugin=fail:https://github.com/mojohaus/flatten-maven-plugin/issues/256
# no issue in flatten-maven-plugin: t's a question of choice of Maven version: with 3.8.2+, it writes groupId then artifactId, with 3.8.1- it writes artifactId then groupId

org.eclipse.sisu+sisu-maven-plugin=0.3.4
# https://github.com/eclipse/sisu.inject/pull/5
org.eclipse.jetty+jetty-jspc-maven-plugin=fail:https://github.com/eclipse/jetty.project/

org.glassfish.hk2+hk2-inhabitant-generator=3.0.5
# https://github.com/eclipse-ee4j/glassfish-hk2/pull/821

org.jboss.jandex+jandex-maven-plugin=fail:https://github.com/wildfly/jandex-maven-plugin/pull/35

org.moditect+moditect-maven-plugin=1.1.0
# https://github.com/moditect/moditect/pull/211
# https://github.com/moditect/moditect/pull/189

org.springframework.boot+spring-boot-maven-plugin=2.7.1
# https://github.com/spring-projects/spring-boot/issues/21005

org.vafer+jdeb=1.10
# https://github.com/tcurdt/jdeb/pull/363
