You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Petr Kuzel (Jira)" <ji...@apache.org> on 2023/06/28 12:17:00 UTC
[jira] [Commented] (CAMEL-19384) Wrong declaration of minimal Java version on pom (inherited)
[ https://issues.apache.org/jira/browse/CAMEL-19384?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17738091#comment-17738091 ]
Petr Kuzel commented on CAMEL-19384:
------------------------------------
verified on main (4.x)
> Wrong declaration of minimal Java version on pom (inherited)
> ------------------------------------------------------------
>
> Key: CAMEL-19384
> URL: https://issues.apache.org/jira/browse/CAMEL-19384
> Project: Camel
> Issue Type: Task
> Components: build system
> Affects Versions: 3.21.0
> Environment: eclipse 2023-03 on Windows with JDK 8 and JDK 11.
> Reporter: Petr Kuzel
> Priority: Minor
> Fix For: 4.0-RC1, 4.0.0
>
> Original Estimate: 4h
> Remaining Estimate: 4h
>
> By [https://camel.apache.org/manual/what-are-the-dependencies.html |https://camel.apache.org/manual/what-are-the-dependencies.html]Camel 3.21.x depends on Java 11.
>
> But it is not correctly declared in Camel poms so eclipse 2023-03 m2e selects JDK 8 to run maven and the build fails with puzzling low-level errors on class file format incompatibility.
>
> h3. Eclipse Perspective
> Eclipse 2023-03 detects Java version to be used for executing maven from
> the `requireJavaVersion` element of the `maven-enforcer-plugin` configuration.
> [https://github.com/eclipse-m2e/m2e-core/blob/master/RELEASE_NOTES.md#220]
> Investigating the component pom's parents chain, I have found at the top-most parent pom:
> {{ <groupId>org.apache</groupId>}}
> {{ <artifactId>apache</artifactId>}}
> {{{} <version>29</version>{}}}{{{{}}{}}}
> {{ <properties>}}
> {{ <minimalJavaBuildVersion>{*}1.8{*}</minimalJavaBuildVersion>}}
>
> {{ <id>enforce-java-version</id>}}
> {{ ...}}
> {{ <configuration>}}
> {{ <rules>}}
> {{ <requireJavaVersion>}}
> {{ <version>${minimalJavaBuildVersion}</version>}}
>
> consequently it is better to specify in the component pom:
> {{ <properties>}}
> {{ <minimalJavaBuildVersion>{*}11{*}</minimalJavaBuildVersion>}}
>
> to get a warning if eclipse m2e selects a lower JDK version:
> [[1;34mINFO[m] [1m--- [0;32menforcer:3.0.0:enforce[m [1m(enforce-java-version)[m @ [36mcamel-azure-files[0;1m ---[m [[1;33mWARNING[m] Rule 0: org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message:
> {{ Detected JDK Version: 1.8.0-271 is not in the allowed range 11.}}
>
> rather than crashing on class file format incompatibility errors.
>
> h3. Expected Behaviour
> Minimal Java build version is not eclipse specific, it just happens eclipse leverages it, so Camel should at a proper pom level (could be the Camel root pom) declare:
>
> {{{{ <properties>}}}}
> {{{} <minimalJavaBuildVersion>{}}}{{{}{matches [https://camel.apache.org/manual/what-are-the-dependencies.html]}{}}}{{{}</minimalJavaBuildVersion>{}}}
>
> Hope it helps.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)