This is an automated email from the ASF dual-hosted git repository.
ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 651957d7083 Ban com.sun.xml.bind:jaxb-impl, replace it with
jaxb-runtime where needed
651957d7083 is described below
commit 651957d7083e8915a14120539d393681d97717ba
Author: Peter Palaga <[email protected]>
AuthorDate: Tue Aug 27 16:21:21 2024 +0200
Ban com.sun.xml.bind:jaxb-impl, replace it with jaxb-runtime where needed
---
apache-camel/pom.xml | 1 +
catalog/camel-allcomponents/pom.xml | 4 +++
components/camel-jaxb/pom.xml | 12 -------
components/camel-jmx/pom.xml | 5 ++-
components/camel-parquet-avro/pom.xml | 4 +++
.../camel-salesforce-component/pom.xml | 5 ++-
components/camel-soap/pom.xml | 14 --------
components/camel-swift/pom.xml | 10 ++++++
core/camel-xml-jaxb/pom.xml | 10 ++----
docs/pom.xml | 2 ++
.../ROOT/pages/camel-4x-upgrade-guide-4_8.adoc | 8 +++++
dsl/camel-componentdsl/pom.xml | 1 +
dsl/camel-endpointdsl/pom.xml | 3 +-
pom.xml | 40 +++++++++-------------
tests/camel-itest/pom.xml | 11 +-----
tooling/{ => enforcer-rules}/pom.xml | 24 +++----------
.../main/resources/camel-banned-dependencies.xml | 29 ++++++++++++++++
tooling/pom.xml | 1 +
18 files changed, 90 insertions(+), 94 deletions(-)
diff --git a/apache-camel/pom.xml b/apache-camel/pom.xml
index b2ae6d9cae3..7b97c774362 100644
--- a/apache-camel/pom.xml
+++ b/apache-camel/pom.xml
@@ -39,6 +39,7 @@
<!-- we do not need remote resources in assembly -->
<remoteresources.skip>true</remoteresources.skip>
<tarLongFileMode>gnu</tarLongFileMode>
+ <enforcer.phase>none</enforcer.phase><!-- Save some time -->
</properties>
<repositories>
diff --git a/catalog/camel-allcomponents/pom.xml
b/catalog/camel-allcomponents/pom.xml
index 63baf6c9a69..b86ebc70de2 100644
--- a/catalog/camel-allcomponents/pom.xml
+++ b/catalog/camel-allcomponents/pom.xml
@@ -32,6 +32,10 @@
<name>Camel :: All Components Sync point</name>
<description>Depends on all components to ensure correct build
ordering</description>
+ <properties>
+ <enforcer.phase>none</enforcer.phase><!-- We enforce all dependencies
individuall, so there is no point enforcing here again -->
+ </properties>
+
<repositories>
<repository>
<id>atlassian</id>
diff --git a/components/camel-jaxb/pom.xml b/components/camel-jaxb/pom.xml
index af10c0f633b..5faf0d507a9 100644
--- a/components/camel-jaxb/pom.xml
+++ b/components/camel-jaxb/pom.xml
@@ -47,18 +47,6 @@
<artifactId>camel-xml-jaxp</artifactId>
</dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-core</artifactId>
- <version>${jaxb-core-version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb-impl-version}</version>
- <optional>true</optional>
- </dependency>
-
<!-- for testing -->
<dependency>
<groupId>org.junit.jupiter</groupId>
diff --git a/components/camel-jmx/pom.xml b/components/camel-jmx/pom.xml
index 92bf4d160fd..167e934247b 100644
--- a/components/camel-jmx/pom.xml
+++ b/components/camel-jmx/pom.xml
@@ -51,9 +51,8 @@
</dependency>
<dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb-impl-version}</version>
+ <groupId>org.glassfish.jaxb</groupId>
+ <artifactId>jaxb-runtime</artifactId>
</dependency>
<!-- test dependencies -->
diff --git a/components/camel-parquet-avro/pom.xml
b/components/camel-parquet-avro/pom.xml
index d75eb7ed1c2..a177efd25b6 100644
--- a/components/camel-parquet-avro/pom.xml
+++ b/components/camel-parquet-avro/pom.xml
@@ -31,6 +31,10 @@
<name>Camel :: Parquet Avro</name>
<description>Camel ParquetAvro DataFormat</description>
+ <properties>
+ <enforcer.phase>none</enforcer.phase><!-- hadoop-common seems to
require com.sun.xml.bind:jaxb-impl via com.github.pjfanning:jersey-json -->
+ </properties>
+
<dependencies>
<dependency>
diff --git a/components/camel-salesforce/camel-salesforce-component/pom.xml
b/components/camel-salesforce/camel-salesforce-component/pom.xml
index 8e4036e0543..b8ba829c277 100644
--- a/components/camel-salesforce/camel-salesforce-component/pom.xml
+++ b/components/camel-salesforce/camel-salesforce-component/pom.xml
@@ -116,9 +116,8 @@
</dependency>
<dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb-impl-version}</version>
+ <groupId>org.glassfish.jaxb</groupId>
+ <artifactId>jaxb-runtime</artifactId>
</dependency>
<!-- Pub/Sub API dependencies -->
<dependency>
diff --git a/components/camel-soap/pom.xml b/components/camel-soap/pom.xml
index cbe9e4a301d..a643bb5cceb 100644
--- a/components/camel-soap/pom.xml
+++ b/components/camel-soap/pom.xml
@@ -46,11 +46,6 @@
<artifactId>camel-jaxb</artifactId>
</dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb-impl-version}</version>
- </dependency>
<dependency>
<groupId>jakarta.xml.ws</groupId>
<artifactId>jakarta.xml.ws-api</artifactId>
@@ -112,15 +107,6 @@
<version>${spring-version}</version>
<scope>test</scope>
</dependency>
-
- <!-- needed by jetty http server to load class:
org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter -->
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-osgi</artifactId>
- <version>${jaxb-osgi-version}</version>
- <scope>test</scope>
- </dependency>
-
</dependencies>
<build>
diff --git a/components/camel-swift/pom.xml b/components/camel-swift/pom.xml
index 340df8536e0..3651676c360 100644
--- a/components/camel-swift/pom.xml
+++ b/components/camel-swift/pom.xml
@@ -45,6 +45,16 @@
<groupId>com.prowidesoftware</groupId>
<artifactId>pw-iso20022</artifactId>
<version>${prowide-version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.glassfish.jaxb</groupId>
+ <artifactId>jaxb-runtime</artifactId>
</dependency>
<!-- testing -->
diff --git a/core/camel-xml-jaxb/pom.xml b/core/camel-xml-jaxb/pom.xml
index 50911d344a9..8718a65de7a 100644
--- a/core/camel-xml-jaxb/pom.xml
+++ b/core/camel-xml-jaxb/pom.xml
@@ -47,14 +47,8 @@
<!-- need JAXB implementation -->
<dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-core</artifactId>
- <version>${jaxb-core-version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb-impl-version}</version>
+ <groupId>org.glassfish.jaxb</groupId>
+ <artifactId>jaxb-runtime</artifactId>
</dependency>
<dependency>
diff --git a/docs/pom.xml b/docs/pom.xml
index 7a5ef8e3e04..8025a872b12 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -33,8 +33,10 @@
<properties>
<skipOnUnsupported>true</skipOnUnsupported>
+ <enforcer.phase>none</enforcer.phase><!-- Save some time -->
</properties>
+
<repositories>
<repository>
<id>atlassian</id>
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_8.adoc
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_8.adoc
index 997e4cb1b2c..96f47f9227a 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_8.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_8.adoc
@@ -38,3 +38,11 @@ You can configure `startupOnly=true` to only sync the cache
once on startup
Continuing the multi-release tests cleanups, on this one, restricted methods
from the `CamelTestSupport` class
have been marked as final and cannot be extended.
+
+=== Preferred JAX-B implementation: `org.glassfish.jaxb:jaxb-runtime`
+
+We stopped relying on `com.sun.xml.bind:jaxb-impl` in favor of
`org.glassfish.jaxb:jaxb-runtime`.
+This change should have no impact on existing code, because recent versions of
the two artifacts bring the same classes.
+The main motivation for this change is to allow projects that still require
classes from `javax.xml.bind` package
+to be able to depend on pre-3.x versions of `com.sun.xml.bind:jaxb-impl`
together with the recent version of
+`org.glassfish.jaxb:jaxb-runtime` brought by Camel.
diff --git a/dsl/camel-componentdsl/pom.xml b/dsl/camel-componentdsl/pom.xml
index 40041126ecc..5582e149417 100644
--- a/dsl/camel-componentdsl/pom.xml
+++ b/dsl/camel-componentdsl/pom.xml
@@ -36,6 +36,7 @@
<firstVersion>3.1.0</firstVersion>
<title>Java Component DSL</title>
<label>dsl</label>
+ <enforcer.phase>none</enforcer.phase><!-- Save some time -->
</properties>
<repositories>
diff --git a/dsl/camel-endpointdsl/pom.xml b/dsl/camel-endpointdsl/pom.xml
index daba28afcf8..28e002e5e56 100644
--- a/dsl/camel-endpointdsl/pom.xml
+++ b/dsl/camel-endpointdsl/pom.xml
@@ -36,6 +36,7 @@
<firstVersion>3.0.0</firstVersion>
<title>Java Endpoint DSL</title>
<label>dsl</label>
+ <enforcer.phase>none</enforcer.phase><!-- Save some time -->
</properties>
<repositories>
@@ -50,7 +51,7 @@
<enabled>true</enabled>
</releases>
</repository>
- </repositories>
+ </repositories>
<dependencies>
diff --git a/pom.xml b/pom.xml
index ca238d8878d..c84c1e56e87 100644
--- a/pom.xml
+++ b/pom.xml
@@ -137,6 +137,8 @@
<camel.javadoc.offline>false</camel.javadoc.offline>
<invoker.skip>${skipTests}</invoker.skip>
+
+ <enforcer.phase>none</enforcer.phase><!-- We do not enforce with
-Dquickly, the property is overridden in the full profile -->
</properties>
<!-- Comment out the snapshot repositories as we don't need them now -->
@@ -164,13 +166,21 @@
<executions>
<execution>
<id>enforce-maven-version</id>
- <phase>none
- </phase><!-- unbound here to speedup -Dquickly build;
bound to a phase in the full profile -->
+ <phase>${enforcer.phase}</phase>
+ <configuration>
+ <rules>
+ <requireMavenVersion>
+ <version>3.5.0</version>
+ </requireMavenVersion>
+ <externalRules>
+
<location>${maven.multiModuleProjectDirectory}/tooling/enforcer-rules/src/main/resources/camel-banned-dependencies.xml</location>
+ </externalRules>
+ </rules>
+ </configuration>
</execution>
<execution>
<id>enforce-java-version</id>
- <phase>none
- </phase><!-- unbound here to speedup -Dquickly build;
bound to a phase in the full profile -->
+ <phase>${enforcer.phase}</phase>
</execution>
</executions>
</plugin>
@@ -860,6 +870,9 @@
<name>!quickly</name>
</property>
</activation>
+ <properties>
+ <enforcer.phase>validate</enforcer.phase><!-- We do not
enforce with -Dquickly, but we enforce otherwise -->
+ </properties>
<build>
<plugins>
<plugin>
@@ -875,25 +888,6 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-enforcer-plugin</artifactId>
- <executions>
- <execution>
- <id>enforce-maven-version</id>
- <goals>
- <goal>enforce</goal>
- </goals>
- <configuration>
- <rules>
- <requireMavenVersion>
- <version>3.5.0</version>
- </requireMavenVersion>
- </rules>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
diff --git a/tests/camel-itest/pom.xml b/tests/camel-itest/pom.xml
index f052ef22e4a..ce72a3ab2c7 100644
--- a/tests/camel-itest/pom.xml
+++ b/tests/camel-itest/pom.xml
@@ -218,7 +218,7 @@
<artifactId>derbytools</artifactId>
<version>${derby-version}</version>
<scope>test</scope>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
@@ -363,15 +363,6 @@
<artifactId>jboss-logging</artifactId>
<version>${jboss-logging-version}</version>
</dependency>
-
- <!-- needed by jetty http server to load class:
org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter -->
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-osgi</artifactId>
- <version>${jaxb-osgi-version}</version>
- <scope>test</scope>
- </dependency>
-
</dependencies>
<build>
diff --git a/tooling/pom.xml b/tooling/enforcer-rules/pom.xml
similarity index 65%
copy from tooling/pom.xml
copy to tooling/enforcer-rules/pom.xml
index 64d71ff6d96..d3d8f093301 100644
--- a/tooling/pom.xml
+++ b/tooling/enforcer-rules/pom.xml
@@ -22,28 +22,12 @@
<parent>
<groupId>org.apache.camel</groupId>
- <artifactId>camel-parent</artifactId>
+ <artifactId>tooling</artifactId>
<version>4.8.0-SNAPSHOT</version>
- <relativePath>../parent</relativePath>
</parent>
- <artifactId>tooling</artifactId>
- <packaging>pom</packaging>
+ <artifactId>camel-enforcer-rules</artifactId>
- <name>Camel :: Tooling</name>
- <description>Camel Tooling</description>
-
- <modules>
- <module>parent</module>
- <module>spi-annotations</module>
- <module>camel-tooling-model</module>
- <module>camel-util-json</module>
- <module>camel-tooling-util</module>
- <module>openapi-rest-dsl-generator</module>
- <module>maven</module>
- <module>camel-tooling-maven</module>
- </modules>
-
- <properties>
- </properties>
+ <name>Camel :: Enforcer rules</name>
+ <description>Rules for Maven Enforcer plugin packaged in a jar, so that
they can be reused by Camel Quarkus, Camel SpringBoot and other
projects</description>
</project>
diff --git
a/tooling/enforcer-rules/src/main/resources/camel-banned-dependencies.xml
b/tooling/enforcer-rules/src/main/resources/camel-banned-dependencies.xml
new file mode 100644
index 00000000000..0d108ab95e8
--- /dev/null
+++ b/tooling/enforcer-rules/src/main/resources/camel-banned-dependencies.xml
@@ -0,0 +1,29 @@
+<!--
+
+ 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.
+
+-->
+<enforcer>
+ <rules>
+ <!-- Camel dependency bans -->
+ <bannedDependencies>
+ <excludes>
+ <exclude>com.sun.xml.bind:jaxb-core</exclude><!-- use
org.glassfish.jaxb:jaxb-core instead -->
+ <exclude>com.sun.xml.bind:jaxb-impl</exclude><!-- use
org.glassfish.jaxb:jaxb-runtime instead -->
+ </excludes>
+ </bannedDependencies>
+ </rules>
+</enforcer>
\ No newline at end of file
diff --git a/tooling/pom.xml b/tooling/pom.xml
index 64d71ff6d96..f3fb73d4243 100644
--- a/tooling/pom.xml
+++ b/tooling/pom.xml
@@ -42,6 +42,7 @@
<module>openapi-rest-dsl-generator</module>
<module>maven</module>
<module>camel-tooling-maven</module>
+ <module>enforcer-rules</module>
</modules>
<properties>