Browse Source

Allow build to directly run under JDK 9 (#25859)

With Gradle 4.1 and newer JDK versions, we can finally invoke Gradle directly using a JDK9 JAVA_HOME without requiring a JDK8 to "bootstrap" the build. As the thirdPartyAudit task runs within the JVM that Gradle runs in, it needs to be adapted now to be JDK9 aware.

This commit also changes the `JavaCompile` tasks to only fork if necessary (i.e. when Gradle's JVM and JAVA_HOME's JVM differ).
Yannick Welsch 8 years ago
parent
commit
efd79882a2

+ 13 - 7
buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy

@@ -408,11 +408,13 @@ class BuildPlugin implements Plugin<Project> {
     static void configureCompile(Project project) {
         project.ext.compactProfile = 'compact3'
         project.afterEvaluate {
-            // fail on all javac warnings
             project.tasks.withType(JavaCompile) {
-                options.fork = true
-                options.forkOptions.executable = new File(project.javaHome, 'bin/javac')
-                options.forkOptions.memoryMaximumSize = "1g"
+                File gradleJavaHome = Jvm.current().javaHome
+                if (new File(project.javaHome).canonicalPath != gradleJavaHome.canonicalPath) {
+                    options.fork = true
+                    options.forkOptions.executable = new File(project.javaHome, 'bin/javac')
+                    options.forkOptions.memoryMaximumSize = "1g"
+                }
                 if (project.targetCompatibility >= JavaVersion.VERSION_1_8) {
                     // compile with compact 3 profile by default
                     // NOTE: this is just a compile time check: does not replace testing with a compact3 JRE
@@ -426,6 +428,7 @@ class BuildPlugin implements Plugin<Project> {
                  * -serial because we don't use java serialization.
                  */
                 // don't even think about passing args with -J-xxx, oracle will ask you to submit a bug report :)
+                // fail on all javac warnings
                 options.compilerArgs << '-Werror' << '-Xlint:all,-path,-serial,-options,-deprecation' << '-Xdoclint:all' << '-Xdoclint:-missing'
 
                 // either disable annotation processor completely (default) or allow to enable them if an annotation processor is explicitly defined
@@ -440,9 +443,12 @@ class BuildPlugin implements Plugin<Project> {
                     // hack until gradle supports java 9's new "--release" arg
                     assert minimumJava == JavaVersion.VERSION_1_8
                     options.compilerArgs << '--release' << '8'
-                    doFirst{
-                        sourceCompatibility = null
-                        targetCompatibility = null
+                    if (GradleVersion.current().getBaseVersion() < GradleVersion.version("4.1")) {
+                        // this hack is not needed anymore since Gradle 4.1, see https://github.com/gradle/gradle/pull/2474
+                        doFirst {
+                            sourceCompatibility = null
+                            targetCompatibility = null
+                        }
                     }
                 }
             }

+ 4 - 0
core/build.gradle

@@ -258,6 +258,10 @@ thirdPartyAudit.excludes = [
   'org.noggit.JSONParser',
 ]
 
+if (JavaVersion.current() > JavaVersion.VERSION_1_8) {
+  thirdPartyAudit.excludes += ['javax.xml.bind.DatatypeConverter']
+}
+
 dependencyLicenses {
   mapping from: /lucene-.*/, to: 'lucene'
   mapping from: /jackson-.*/, to: 'jackson'

+ 119 - 103
plugins/discovery-azure-classic/build.gradle

@@ -125,107 +125,123 @@ thirdPartyAudit.excludes = [
   'org.osgi.framework.SynchronousBundleListener',
   'com.sun.xml.fastinfoset.stax.StAXDocumentParser', 
   'com.sun.xml.fastinfoset.stax.StAXDocumentSerializer',
-
-  // jarhell with jdk (intentionally, because jaxb was removed from default modules in java 9)
-  'javax.xml.bind.Binder',
-  'javax.xml.bind.ContextFinder$1',
-  'javax.xml.bind.ContextFinder',
-  'javax.xml.bind.DataBindingException',
-  'javax.xml.bind.DatatypeConverter',
-  'javax.xml.bind.DatatypeConverterImpl$CalendarFormatter',
-  'javax.xml.bind.DatatypeConverterImpl',
-  'javax.xml.bind.DatatypeConverterInterface',
-  'javax.xml.bind.Element',
-  'javax.xml.bind.GetPropertyAction',
-  'javax.xml.bind.JAXB$Cache',
-  'javax.xml.bind.JAXB',
-  'javax.xml.bind.JAXBContext',
-  'javax.xml.bind.JAXBElement$GlobalScope',
-  'javax.xml.bind.JAXBElement',
-  'javax.xml.bind.JAXBException',
-  'javax.xml.bind.JAXBIntrospector',
-  'javax.xml.bind.JAXBPermission',
-  'javax.xml.bind.MarshalException',
-  'javax.xml.bind.Marshaller$Listener',
-  'javax.xml.bind.Marshaller',
-  'javax.xml.bind.Messages',
-  'javax.xml.bind.NotIdentifiableEvent',
-  'javax.xml.bind.ParseConversionEvent',
-  'javax.xml.bind.PrintConversionEvent',
-  'javax.xml.bind.PropertyException',
-  'javax.xml.bind.SchemaOutputResolver',
-  'javax.xml.bind.TypeConstraintException',
-  'javax.xml.bind.UnmarshalException',
-  'javax.xml.bind.Unmarshaller$Listener',
-  'javax.xml.bind.Unmarshaller',
-  'javax.xml.bind.UnmarshallerHandler',
-  'javax.xml.bind.ValidationEvent',
-  'javax.xml.bind.ValidationEventHandler',
-  'javax.xml.bind.ValidationEventLocator',
-  'javax.xml.bind.ValidationException',
-  'javax.xml.bind.Validator',
-  'javax.xml.bind.WhiteSpaceProcessor',
-  'javax.xml.bind.annotation.DomHandler',
-  'javax.xml.bind.annotation.W3CDomHandler',
-  'javax.xml.bind.annotation.XmlAccessOrder',
-  'javax.xml.bind.annotation.XmlAccessType',
-  'javax.xml.bind.annotation.XmlAccessorOrder',
-  'javax.xml.bind.annotation.XmlAccessorType',
-  'javax.xml.bind.annotation.XmlAnyAttribute',
-  'javax.xml.bind.annotation.XmlAnyElement',
-  'javax.xml.bind.annotation.XmlAttachmentRef',
-  'javax.xml.bind.annotation.XmlAttribute',
-  'javax.xml.bind.annotation.XmlElement$DEFAULT',
-  'javax.xml.bind.annotation.XmlElement',
-  'javax.xml.bind.annotation.XmlElementDecl$GLOBAL',
-  'javax.xml.bind.annotation.XmlElementDecl',
-  'javax.xml.bind.annotation.XmlElementRef$DEFAULT',
-  'javax.xml.bind.annotation.XmlElementRef',
-  'javax.xml.bind.annotation.XmlElementRefs',
-  'javax.xml.bind.annotation.XmlElementWrapper',
-  'javax.xml.bind.annotation.XmlElements',
-  'javax.xml.bind.annotation.XmlEnum',
-  'javax.xml.bind.annotation.XmlEnumValue',
-  'javax.xml.bind.annotation.XmlID',
-  'javax.xml.bind.annotation.XmlIDREF',
-  'javax.xml.bind.annotation.XmlInlineBinaryData',
-  'javax.xml.bind.annotation.XmlList',
-  'javax.xml.bind.annotation.XmlMimeType',
-  'javax.xml.bind.annotation.XmlMixed',
-  'javax.xml.bind.annotation.XmlNs',
-  'javax.xml.bind.annotation.XmlNsForm',
-  'javax.xml.bind.annotation.XmlRegistry',
-  'javax.xml.bind.annotation.XmlRootElement',
-  'javax.xml.bind.annotation.XmlSchema',
-  'javax.xml.bind.annotation.XmlSchemaType$DEFAULT',
-  'javax.xml.bind.annotation.XmlSchemaType',
-  'javax.xml.bind.annotation.XmlSchemaTypes',
-  'javax.xml.bind.annotation.XmlSeeAlso',
-  'javax.xml.bind.annotation.XmlTransient',
-  'javax.xml.bind.annotation.XmlType$DEFAULT',
-  'javax.xml.bind.annotation.XmlType',
-  'javax.xml.bind.annotation.XmlValue',
-  'javax.xml.bind.annotation.adapters.CollapsedStringAdapter',
-  'javax.xml.bind.annotation.adapters.HexBinaryAdapter',
-  'javax.xml.bind.annotation.adapters.NormalizedStringAdapter',
-  'javax.xml.bind.annotation.adapters.XmlAdapter',
-  'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter$DEFAULT',
-  'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter',
-  'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters',
-  'javax.xml.bind.attachment.AttachmentMarshaller',
-  'javax.xml.bind.attachment.AttachmentUnmarshaller',
-  'javax.xml.bind.helpers.AbstractMarshallerImpl',
-  'javax.xml.bind.helpers.AbstractUnmarshallerImpl',
-  'javax.xml.bind.helpers.DefaultValidationEventHandler',
-  'javax.xml.bind.helpers.Messages',
-  'javax.xml.bind.helpers.NotIdentifiableEventImpl',
-  'javax.xml.bind.helpers.ParseConversionEventImpl',
-  'javax.xml.bind.helpers.PrintConversionEventImpl',
-  'javax.xml.bind.helpers.ValidationEventImpl',
-  'javax.xml.bind.helpers.ValidationEventLocatorImpl',
-  'javax.xml.bind.util.JAXBResult',
-  'javax.xml.bind.util.JAXBSource$1',
-  'javax.xml.bind.util.JAXBSource',
-  'javax.xml.bind.util.Messages',
-  'javax.xml.bind.util.ValidationEventCollector'
 ]
+
+// jarhell with jdk (intentionally, because jaxb was removed from default modules in java 9)
+if (JavaVersion.current() <= JavaVersion.VERSION_1_8) {
+  thirdPartyAudit.excludes += [
+    'javax.xml.bind.Binder',
+    'javax.xml.bind.ContextFinder$1',
+    'javax.xml.bind.ContextFinder',
+    'javax.xml.bind.DataBindingException',
+    'javax.xml.bind.DatatypeConverter',
+    'javax.xml.bind.DatatypeConverterImpl$CalendarFormatter',
+    'javax.xml.bind.DatatypeConverterImpl',
+    'javax.xml.bind.DatatypeConverterInterface',
+    'javax.xml.bind.Element',
+    'javax.xml.bind.GetPropertyAction',
+    'javax.xml.bind.JAXB$Cache',
+    'javax.xml.bind.JAXB',
+    'javax.xml.bind.JAXBContext',
+    'javax.xml.bind.JAXBElement$GlobalScope',
+    'javax.xml.bind.JAXBElement',
+    'javax.xml.bind.JAXBException',
+    'javax.xml.bind.JAXBIntrospector',
+    'javax.xml.bind.JAXBPermission',
+    'javax.xml.bind.MarshalException',
+    'javax.xml.bind.Marshaller$Listener',
+    'javax.xml.bind.Marshaller',
+    'javax.xml.bind.Messages',
+    'javax.xml.bind.NotIdentifiableEvent',
+    'javax.xml.bind.ParseConversionEvent',
+    'javax.xml.bind.PrintConversionEvent',
+    'javax.xml.bind.PropertyException',
+    'javax.xml.bind.SchemaOutputResolver',
+    'javax.xml.bind.TypeConstraintException',
+    'javax.xml.bind.UnmarshalException',
+    'javax.xml.bind.Unmarshaller$Listener',
+    'javax.xml.bind.Unmarshaller',
+    'javax.xml.bind.UnmarshallerHandler',
+    'javax.xml.bind.ValidationEvent',
+    'javax.xml.bind.ValidationEventHandler',
+    'javax.xml.bind.ValidationEventLocator',
+    'javax.xml.bind.ValidationException',
+    'javax.xml.bind.Validator',
+    'javax.xml.bind.WhiteSpaceProcessor',
+    'javax.xml.bind.annotation.DomHandler',
+    'javax.xml.bind.annotation.W3CDomHandler',
+    'javax.xml.bind.annotation.XmlAccessOrder',
+    'javax.xml.bind.annotation.XmlAccessType',
+    'javax.xml.bind.annotation.XmlAccessorOrder',
+    'javax.xml.bind.annotation.XmlAccessorType',
+    'javax.xml.bind.annotation.XmlAnyAttribute',
+    'javax.xml.bind.annotation.XmlAnyElement',
+    'javax.xml.bind.annotation.XmlAttachmentRef',
+    'javax.xml.bind.annotation.XmlAttribute',
+    'javax.xml.bind.annotation.XmlElement$DEFAULT',
+    'javax.xml.bind.annotation.XmlElement',
+    'javax.xml.bind.annotation.XmlElementDecl$GLOBAL',
+    'javax.xml.bind.annotation.XmlElementDecl',
+    'javax.xml.bind.annotation.XmlElementRef$DEFAULT',
+    'javax.xml.bind.annotation.XmlElementRef',
+    'javax.xml.bind.annotation.XmlElementRefs',
+    'javax.xml.bind.annotation.XmlElementWrapper',
+    'javax.xml.bind.annotation.XmlElements',
+    'javax.xml.bind.annotation.XmlEnum',
+    'javax.xml.bind.annotation.XmlEnumValue',
+    'javax.xml.bind.annotation.XmlID',
+    'javax.xml.bind.annotation.XmlIDREF',
+    'javax.xml.bind.annotation.XmlInlineBinaryData',
+    'javax.xml.bind.annotation.XmlList',
+    'javax.xml.bind.annotation.XmlMimeType',
+    'javax.xml.bind.annotation.XmlMixed',
+    'javax.xml.bind.annotation.XmlNs',
+    'javax.xml.bind.annotation.XmlNsForm',
+    'javax.xml.bind.annotation.XmlRegistry',
+    'javax.xml.bind.annotation.XmlRootElement',
+    'javax.xml.bind.annotation.XmlSchema',
+    'javax.xml.bind.annotation.XmlSchemaType$DEFAULT',
+    'javax.xml.bind.annotation.XmlSchemaType',
+    'javax.xml.bind.annotation.XmlSchemaTypes',
+    'javax.xml.bind.annotation.XmlSeeAlso',
+    'javax.xml.bind.annotation.XmlTransient',
+    'javax.xml.bind.annotation.XmlType$DEFAULT',
+    'javax.xml.bind.annotation.XmlType',
+    'javax.xml.bind.annotation.XmlValue',
+    'javax.xml.bind.annotation.adapters.CollapsedStringAdapter',
+    'javax.xml.bind.annotation.adapters.HexBinaryAdapter',
+    'javax.xml.bind.annotation.adapters.NormalizedStringAdapter',
+    'javax.xml.bind.annotation.adapters.XmlAdapter',
+    'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter$DEFAULT',
+    'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter',
+    'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters',
+    'javax.xml.bind.attachment.AttachmentMarshaller',
+    'javax.xml.bind.attachment.AttachmentUnmarshaller',
+    'javax.xml.bind.helpers.AbstractMarshallerImpl',
+    'javax.xml.bind.helpers.AbstractUnmarshallerImpl',
+    'javax.xml.bind.helpers.DefaultValidationEventHandler',
+    'javax.xml.bind.helpers.Messages',
+    'javax.xml.bind.helpers.NotIdentifiableEventImpl',
+    'javax.xml.bind.helpers.ParseConversionEventImpl',
+    'javax.xml.bind.helpers.PrintConversionEventImpl',
+    'javax.xml.bind.helpers.ValidationEventImpl',
+    'javax.xml.bind.helpers.ValidationEventLocatorImpl',
+    'javax.xml.bind.util.JAXBResult',
+    'javax.xml.bind.util.JAXBSource$1',
+    'javax.xml.bind.util.JAXBSource',
+    'javax.xml.bind.util.Messages',
+    'javax.xml.bind.util.ValidationEventCollector'
+  ]
+} else {
+  // jarhell with jdk (intentionally, because we still expect to run again JDK 8)
+  thirdPartyAudit.excludes += [
+    'javax.activation.ActivationDataFlavor',
+    'javax.activation.DataContentHandler',
+    'javax.activation.DataHandler',
+    'javax.activation.DataSource',
+    'javax.activation.FileDataSource',
+    'javax.activation.FileTypeMap',
+    'javax.activation.MimeType',
+    'javax.activation.MimeTypeParseException',
+  ]
+}

+ 4 - 0
plugins/discovery-ec2/build.gradle

@@ -61,3 +61,7 @@ thirdPartyAudit.excludes = [
   'org.apache.log.Hierarchy', 
   'org.apache.log.Logger',
 ]
+
+if (JavaVersion.current() > JavaVersion.VERSION_1_8) {
+  thirdPartyAudit.excludes += ['javax.xml.bind.DatatypeConverter']
+}

+ 18 - 0
plugins/ingest-attachment/build.gradle

@@ -2071,3 +2071,21 @@ thirdPartyAudit.excludes = [
   'ucar.nc2.Variable',
   'ucar.nc2.dataset.NetcdfDataset'
 ]
+
+if (JavaVersion.current() > JavaVersion.VERSION_1_8) {
+  thirdPartyAudit.excludes += [
+    'javax.activation.ActivationDataFlavor',
+    'javax.activation.CommandMap',
+    'javax.activation.DataContentHandler',
+    'javax.activation.DataHandler',
+    'javax.activation.DataSource',
+    'javax.activation.FileDataSource',
+    'javax.activation.MailcapCommandMap',
+    'javax.xml.bind.DatatypeConverter',
+    'javax.xml.bind.JAXBContext',
+    'javax.xml.bind.JAXBElement',
+    'javax.xml.bind.Marshaller',
+    'javax.xml.bind.Unmarshaller',
+    'javax.xml.bind.helpers.DefaultValidationEventHandler',
+  ]
+}

+ 4 - 0
plugins/repository-hdfs/build.gradle

@@ -498,3 +498,7 @@ thirdPartyAudit.excludes = [
 if (GradleVersion.current() > GradleVersion.version("2.13")) {
   thirdPartyAudit.excludes += ['org.slf4j.impl.StaticLoggerBinder']
 }
+
+if (JavaVersion.current() > JavaVersion.VERSION_1_8) {
+  thirdPartyAudit.excludes += ['javax.xml.bind.annotation.adapters.HexBinaryAdapter']
+}

+ 109 - 103
plugins/repository-s3/build.gradle

@@ -76,111 +76,117 @@ thirdPartyAudit.excludes = [
   'org.apache.avalon.framework.logger.Logger', 
   'org.apache.log.Hierarchy', 
   'org.apache.log.Logger',
-
-  // jarhell with jdk (intentionally, because jaxb was removed from default modules in java 9)
-  'javax.xml.bind.Binder',
-  'javax.xml.bind.ContextFinder$1',
-  'javax.xml.bind.ContextFinder',
-  'javax.xml.bind.DataBindingException',
-  'javax.xml.bind.DatatypeConverter',
-  'javax.xml.bind.DatatypeConverterImpl$CalendarFormatter',
-  'javax.xml.bind.DatatypeConverterImpl',
-  'javax.xml.bind.DatatypeConverterInterface',
-  'javax.xml.bind.Element',
-  'javax.xml.bind.GetPropertyAction',
-  'javax.xml.bind.JAXB$Cache',
-  'javax.xml.bind.JAXB',
-  'javax.xml.bind.JAXBContext',
-  'javax.xml.bind.JAXBElement$GlobalScope',
-  'javax.xml.bind.JAXBElement',
-  'javax.xml.bind.JAXBException',
-  'javax.xml.bind.JAXBIntrospector',
-  'javax.xml.bind.JAXBPermission',
-  'javax.xml.bind.MarshalException',
-  'javax.xml.bind.Marshaller$Listener',
-  'javax.xml.bind.Marshaller',
-  'javax.xml.bind.Messages',
-  'javax.xml.bind.NotIdentifiableEvent',
-  'javax.xml.bind.ParseConversionEvent',
-  'javax.xml.bind.PrintConversionEvent',
-  'javax.xml.bind.PropertyException',
-  'javax.xml.bind.SchemaOutputResolver',
-  'javax.xml.bind.TypeConstraintException',
-  'javax.xml.bind.UnmarshalException',
-  'javax.xml.bind.Unmarshaller$Listener',
-  'javax.xml.bind.Unmarshaller',
-  'javax.xml.bind.UnmarshallerHandler',
-  'javax.xml.bind.ValidationEvent',
-  'javax.xml.bind.ValidationEventHandler',
-  'javax.xml.bind.ValidationEventLocator',
-  'javax.xml.bind.ValidationException',
-  'javax.xml.bind.Validator',
-  'javax.xml.bind.WhiteSpaceProcessor',
-  'javax.xml.bind.annotation.DomHandler',
-  'javax.xml.bind.annotation.W3CDomHandler',
-  'javax.xml.bind.annotation.XmlAccessOrder',
-  'javax.xml.bind.annotation.XmlAccessType',
-  'javax.xml.bind.annotation.XmlAccessorOrder',
-  'javax.xml.bind.annotation.XmlAccessorType',
-  'javax.xml.bind.annotation.XmlAnyAttribute',
-  'javax.xml.bind.annotation.XmlAnyElement',
-  'javax.xml.bind.annotation.XmlAttachmentRef',
-  'javax.xml.bind.annotation.XmlAttribute',
-  'javax.xml.bind.annotation.XmlElement$DEFAULT',
-  'javax.xml.bind.annotation.XmlElement',
-  'javax.xml.bind.annotation.XmlElementDecl$GLOBAL',
-  'javax.xml.bind.annotation.XmlElementDecl',
-  'javax.xml.bind.annotation.XmlElementRef$DEFAULT',
-  'javax.xml.bind.annotation.XmlElementRef',
-  'javax.xml.bind.annotation.XmlElementRefs',
-  'javax.xml.bind.annotation.XmlElementWrapper',
-  'javax.xml.bind.annotation.XmlElements',
-  'javax.xml.bind.annotation.XmlEnum',
-  'javax.xml.bind.annotation.XmlEnumValue',
-  'javax.xml.bind.annotation.XmlID',
-  'javax.xml.bind.annotation.XmlIDREF',
-  'javax.xml.bind.annotation.XmlInlineBinaryData',
-  'javax.xml.bind.annotation.XmlList',
-  'javax.xml.bind.annotation.XmlMimeType',
-  'javax.xml.bind.annotation.XmlMixed',
-  'javax.xml.bind.annotation.XmlNs',
-  'javax.xml.bind.annotation.XmlNsForm',
-  'javax.xml.bind.annotation.XmlRegistry',
-  'javax.xml.bind.annotation.XmlRootElement',
-  'javax.xml.bind.annotation.XmlSchema',
-  'javax.xml.bind.annotation.XmlSchemaType$DEFAULT',
-  'javax.xml.bind.annotation.XmlSchemaType',
-  'javax.xml.bind.annotation.XmlSchemaTypes',
-  'javax.xml.bind.annotation.XmlSeeAlso',
-  'javax.xml.bind.annotation.XmlTransient',
-  'javax.xml.bind.annotation.XmlType$DEFAULT',
-  'javax.xml.bind.annotation.XmlType',
-  'javax.xml.bind.annotation.XmlValue',
-  'javax.xml.bind.annotation.adapters.CollapsedStringAdapter',
-  'javax.xml.bind.annotation.adapters.HexBinaryAdapter',
-  'javax.xml.bind.annotation.adapters.NormalizedStringAdapter',
-  'javax.xml.bind.annotation.adapters.XmlAdapter',
-  'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter$DEFAULT',
-  'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter',
-  'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters',
-  'javax.xml.bind.attachment.AttachmentMarshaller',
-  'javax.xml.bind.attachment.AttachmentUnmarshaller',
-  'javax.xml.bind.helpers.AbstractMarshallerImpl',
-  'javax.xml.bind.helpers.AbstractUnmarshallerImpl',
-  'javax.xml.bind.helpers.DefaultValidationEventHandler',
-  'javax.xml.bind.helpers.Messages',
-  'javax.xml.bind.helpers.NotIdentifiableEventImpl',
-  'javax.xml.bind.helpers.ParseConversionEventImpl',
-  'javax.xml.bind.helpers.PrintConversionEventImpl',
-  'javax.xml.bind.helpers.ValidationEventImpl',
-  'javax.xml.bind.helpers.ValidationEventLocatorImpl',
-  'javax.xml.bind.util.JAXBResult',
-  'javax.xml.bind.util.JAXBSource$1',
-  'javax.xml.bind.util.JAXBSource',
-  'javax.xml.bind.util.Messages',
-  'javax.xml.bind.util.ValidationEventCollector'
 ]
 
+// jarhell with jdk (intentionally, because jaxb was removed from default modules in java 9)
+if (JavaVersion.current() <= JavaVersion.VERSION_1_8) {
+  thirdPartyAudit.excludes += [
+    'javax.xml.bind.Binder',
+    'javax.xml.bind.ContextFinder$1',
+    'javax.xml.bind.ContextFinder',
+    'javax.xml.bind.DataBindingException',
+    'javax.xml.bind.DatatypeConverter',
+    'javax.xml.bind.DatatypeConverterImpl$CalendarFormatter',
+    'javax.xml.bind.DatatypeConverterImpl',
+    'javax.xml.bind.DatatypeConverterInterface',
+    'javax.xml.bind.Element',
+    'javax.xml.bind.GetPropertyAction',
+    'javax.xml.bind.JAXB$Cache',
+    'javax.xml.bind.JAXB',
+    'javax.xml.bind.JAXBContext',
+    'javax.xml.bind.JAXBElement$GlobalScope',
+    'javax.xml.bind.JAXBElement',
+    'javax.xml.bind.JAXBException',
+    'javax.xml.bind.JAXBIntrospector',
+    'javax.xml.bind.JAXBPermission',
+    'javax.xml.bind.MarshalException',
+    'javax.xml.bind.Marshaller$Listener',
+    'javax.xml.bind.Marshaller',
+    'javax.xml.bind.Messages',
+    'javax.xml.bind.NotIdentifiableEvent',
+    'javax.xml.bind.ParseConversionEvent',
+    'javax.xml.bind.PrintConversionEvent',
+    'javax.xml.bind.PropertyException',
+    'javax.xml.bind.SchemaOutputResolver',
+    'javax.xml.bind.TypeConstraintException',
+    'javax.xml.bind.UnmarshalException',
+    'javax.xml.bind.Unmarshaller$Listener',
+    'javax.xml.bind.Unmarshaller',
+    'javax.xml.bind.UnmarshallerHandler',
+    'javax.xml.bind.ValidationEvent',
+    'javax.xml.bind.ValidationEventHandler',
+    'javax.xml.bind.ValidationEventLocator',
+    'javax.xml.bind.ValidationException',
+    'javax.xml.bind.Validator',
+    'javax.xml.bind.WhiteSpaceProcessor',
+    'javax.xml.bind.annotation.DomHandler',
+    'javax.xml.bind.annotation.W3CDomHandler',
+    'javax.xml.bind.annotation.XmlAccessOrder',
+    'javax.xml.bind.annotation.XmlAccessType',
+    'javax.xml.bind.annotation.XmlAccessorOrder',
+    'javax.xml.bind.annotation.XmlAccessorType',
+    'javax.xml.bind.annotation.XmlAnyAttribute',
+    'javax.xml.bind.annotation.XmlAnyElement',
+    'javax.xml.bind.annotation.XmlAttachmentRef',
+    'javax.xml.bind.annotation.XmlAttribute',
+    'javax.xml.bind.annotation.XmlElement$DEFAULT',
+    'javax.xml.bind.annotation.XmlElement',
+    'javax.xml.bind.annotation.XmlElementDecl$GLOBAL',
+    'javax.xml.bind.annotation.XmlElementDecl',
+    'javax.xml.bind.annotation.XmlElementRef$DEFAULT',
+    'javax.xml.bind.annotation.XmlElementRef',
+    'javax.xml.bind.annotation.XmlElementRefs',
+    'javax.xml.bind.annotation.XmlElementWrapper',
+    'javax.xml.bind.annotation.XmlElements',
+    'javax.xml.bind.annotation.XmlEnum',
+    'javax.xml.bind.annotation.XmlEnumValue',
+    'javax.xml.bind.annotation.XmlID',
+    'javax.xml.bind.annotation.XmlIDREF',
+    'javax.xml.bind.annotation.XmlInlineBinaryData',
+    'javax.xml.bind.annotation.XmlList',
+    'javax.xml.bind.annotation.XmlMimeType',
+    'javax.xml.bind.annotation.XmlMixed',
+    'javax.xml.bind.annotation.XmlNs',
+    'javax.xml.bind.annotation.XmlNsForm',
+    'javax.xml.bind.annotation.XmlRegistry',
+    'javax.xml.bind.annotation.XmlRootElement',
+    'javax.xml.bind.annotation.XmlSchema',
+    'javax.xml.bind.annotation.XmlSchemaType$DEFAULT',
+    'javax.xml.bind.annotation.XmlSchemaType',
+    'javax.xml.bind.annotation.XmlSchemaTypes',
+    'javax.xml.bind.annotation.XmlSeeAlso',
+    'javax.xml.bind.annotation.XmlTransient',
+    'javax.xml.bind.annotation.XmlType$DEFAULT',
+    'javax.xml.bind.annotation.XmlType',
+    'javax.xml.bind.annotation.XmlValue',
+    'javax.xml.bind.annotation.adapters.CollapsedStringAdapter',
+    'javax.xml.bind.annotation.adapters.HexBinaryAdapter',
+    'javax.xml.bind.annotation.adapters.NormalizedStringAdapter',
+    'javax.xml.bind.annotation.adapters.XmlAdapter',
+    'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter$DEFAULT',
+    'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter',
+    'javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters',
+    'javax.xml.bind.attachment.AttachmentMarshaller',
+    'javax.xml.bind.attachment.AttachmentUnmarshaller',
+    'javax.xml.bind.helpers.AbstractMarshallerImpl',
+    'javax.xml.bind.helpers.AbstractUnmarshallerImpl',
+    'javax.xml.bind.helpers.DefaultValidationEventHandler',
+    'javax.xml.bind.helpers.Messages',
+    'javax.xml.bind.helpers.NotIdentifiableEventImpl',
+    'javax.xml.bind.helpers.ParseConversionEventImpl',
+    'javax.xml.bind.helpers.PrintConversionEventImpl',
+    'javax.xml.bind.helpers.ValidationEventImpl',
+    'javax.xml.bind.helpers.ValidationEventLocatorImpl',
+    'javax.xml.bind.util.JAXBResult',
+    'javax.xml.bind.util.JAXBSource$1',
+    'javax.xml.bind.util.JAXBSource',
+    'javax.xml.bind.util.Messages',
+    'javax.xml.bind.util.ValidationEventCollector'
+  ]
+} else {
+  thirdPartyAudit.excludes += ['javax.activation.DataHandler']
+}
+
 // AWS SDK is exposing some deprecated methods which we call using a delegate:
 // * setObjectRedirectLocation(String bucketName, String key, String newRedirectLocation)
 // * changeObjectStorageClass(String bucketName, String key, StorageClass newStorageClass)