Installed from the git tag. I can build projects on JDK 11 and 17. But
not on JDK 8.

The new profile to conditionally configure the maven-compiler-release
plugin for JDK 9+ is incorrect. The parent pom defines the property:

    <!-- Java >= 9 -->
    <maven.compiler.release>8</maven.compiler.release>

Then activates it using:

    <profile>
      <id>jdk9-compiler</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <build>
    <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                <release>${maven.compiler.release}</release>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

However the use of the property <maven.compiler.release> is enough to
set it into the compiler-plugin when building on JDK 8. I see the
following error when building under JDK 8:

[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile
(default-compile) on project commons-lang3: Fatal error compiling:
invalid flag: --release -> [Help 1]

I note that the config is actually recommended on the maven
documentation for the plugin [1]. However it seems that just setting
this property (given that it is the user override property for the
<release> tag [2]) enables it on JDK 8. Perhaps this is an error in
the maven-compiler-plugin itself.

In Commons Geometry the configuration uses a unique property on the
POM and then sets maven.compiler.release for JDK 9+:

    <!-- JVM target version, in the newer JDK 9+ format. -->
    <jvm.target>8</jvm.target>

    <profile>
        <id>compiler-release-property</id>
        <activation>
            <jdk>[9,)</jdk>
        </activation>
        <properties>
            <!--
                The "release" compiler property (available in JDK 9+)
must be set in order to generate
                binary-compatible artifacts for the target JVM. This
flag sets the version of the platform
                APIs to compile against, which is necessary when
building with a later JDK but targeting
                an earlier one. For example, a covariant return type
was added to java.nio.ByteBuffer.rewind()
                in Java 9. If the release property is not set when
compiling with JDK 9 for Java 8, then the
                Java 9 method will be referenced in the bytecode,
causing a runtime error when running on 8.
            -->
            <maven.compiler.release>${jvm.target}</maven.compiler.release>
        </properties>
    </profile>

I switched to this setup in CP 57 and the build on JDK 8 worked. So
perhaps we should change to this pattern and provide feedback to the
maven-compiler-plugin developers that their recommended configuration
does not work.

Other notes:

1. I still get a warning from the SPDX plugin (same as previous versions of CP):

[WARNING] Unable to map maven licenses to a declared license.  Using NOASSERTION

I do not know where this comes from. The ASF 2.0 license should be
recognised. This seems to output for all projects including building
CP itself. Looking at the config options for SPDX this should
automatically recognise the ASF license so I do not know if this is a
config problem or a bug in SPDX.


2. I had problems with commons-lang on a new Mac processor:

Apache Maven 3.9.1 (2e178502fcdbffc201671fb2537d0cb4b4cc58f8)
Maven home: /Users/ah403/mvn/mvn
Java version: 17.0.6, vendor: Eclipse Adoptium, runtime:
/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
Default locale: en_GB, platform encoding: UTF-8
OS name: "mac os x", version: "13.3.1", arch: "aarch64", family: "mac"

Using JDK 11 or 17 I get a failure in a unit test for
ArchUtilsTest.testGetProcessor. The test assumes that the current
architecture is x86. As shown above the architecture is "aarch64". The
problem is with the test which should be more robust to actually
knowing what the architecture is before asserting it is x86. This is
not an issue with the parent.

Note that the "os.arch" property on JDK 8 does not detect the new
apple architecture:

Apache Maven 3.9.1 (2e178502fcdbffc201671fb2537d0cb4b4cc58f8)
Maven home: /Users/ah403/mvn/mvn
Java version: 1.8.0_362, vendor: Temurin, runtime:
/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "mac os x", version: "13.3.1", arch: "x86_64", family: "mac"

So when building on JDK 8 this test passes as the arch is detected as
"x86". The test in lang should be more robust, perhaps just commenting
out the invalid assertion on line 128 would be enough:

        final Processor processor = ArchUtils.getProcessor();
        assertTrue(processor.isX86());  // <--  This is not platform safe

Regards,

Alex

[1] 
https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-release.html
[2] 
https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#release

On Sat, 22 Apr 2023 at 15:25, Gary Gregory <garydgreg...@gmail.com> wrote:
>
> We have fixed quite a few bugs and added some significant enhancements
> since Apache Commons Parent 56 was released, so I would like to
> release Apache Commons Parent 57.
>
> Apache Commons Parent 57 RC1 is available for review here:
>     https://dist.apache.org/repos/dist/dev/commons/commons-parent/57-RC1
> (svn revision 61424)
>
> The Git tag commons-parent-57-RC1 commit for this RC is
> 438328ae7ef71feb9565c650c2d83404c191c031 which you can browse here:
>     
> https://gitbox.apache.org/repos/asf?p=commons-parent.git;a=commit;h=438328ae7ef71feb9565c650c2d83404c191c031
> You may checkout this tag using:
>     git clone https://gitbox.apache.org/repos/asf/commons-parent.git
> --branch commons-parent-57-RC1 commons-parent-57-RC1
>
> Maven artifacts are here:
>     
> https://repository.apache.org/content/repositories/orgapachecommons-1631/org/apache/commons/commons-parent/57/
>
> These are the artifacts and their hashes:
>
> #Release SHA-512s
> #Sat Apr 22 10:17:35 EDT 2023
> commons-parent-57-bom.json=4939a0314f700a40eb479eb4ad62a835c188238f683be411206666ff7edeb90979e3605e25e8955344220345f856d0c45f63baff959e7f0e1a52344129f3ad8e
> commons-parent-57-bom.xml=d0c6bda84d6f5bda73b393b0736ba0d86deac17f5301d22b1696b4ff0cdad07dff4a985361e296eff75807b9e6d3db7616f22b2b80d53958c1df2a843a3c3273
> commons-parent-57-site.xml=c6aea4f2c03920366bee23b08b046dacc09710e92c78ccd83f47cd92f89bc53abc3b8bbc7f44017ee94a2cb022ce763fe3f7d8c9aa42d571350269ba6568ca07
> commons-parent-57-src.tar.gz=ef3debcd562db54ec4382eb80a7b144c2640b856b9df976e96ea89e07d7a951df1b59cf986b600eb57cd2b005b172b6d332041b1c00cef80501a7162d8547ebc
> commons-parent-57-src.zip=42a1ea9148294e7e3db65698d7affffebbc3947bfaa19a72c28ef9388135582075b06f27ef824cdd16a811f6e0062e3a99a40faed1f4626ae4ec151ed22d006d
> org.apache.commons_commons-parent-57.spdx.json=ff9a113539c850d0eec50feff67671664a7b9e236b4c1609101faae3b8d67bf8f7703c9f8cbb8ac5776db94735d7b34c84fcdda6d65b4147785e2854f7d3949d
>
> I have tested this with
>
> mvn -V -Duser.name=$my_apache_id
> -Dcommons_build_plugin_version=$commons_build_plugin_version
> -Ddoclint=none -Prelease -Ptest-deploy clean package site deploy
>
> using:
>
> Apache Maven 3.9.1 (2e178502fcdbffc201671fb2537d0cb4b4cc58f8)
> Maven home: /usr/local/Cellar/maven/3.9.1/libexec
> Java version: 1.8.0_362, vendor: Homebrew, runtime:
> /usr/local/Cellar/openjdk@8/1.8.0+362/libexec/openjdk.jdk/Contents/Home/jre
> Default locale: en_US, platform encoding: UTF-8
> OS name: "mac os x", version: "13.3.1", arch: "x86_64", family: "mac"
> Darwin **** 22.4.0 Darwin Kernel Version 22.4.0: Mon Mar  6 21:00:17
> PST 2023; root:xnu-8796.101.5~3/RELEASE_X86_64 x86_64
>
> Details of changes since 56 are in the release notes:
>     
> https://dist.apache.org/repos/dist/dev/commons/commons-parent/57-RC1/RELEASE-NOTES.txt
>     
> https://dist.apache.org/repos/dist/dev/commons/commons-parent/57-RC1/site/changes-report.html
>
> Site:
>     
> https://dist.apache.org/repos/dist/dev/commons/commons-parent/57-RC1/site/index.html
>     (note some *relative* links are broken and the 57 directories are
> not yet created - these will be OK once the site is deployed.)
>
> RAT Report:
>     
> https://dist.apache.org/repos/dist/dev/commons/commons-parent/57-RC1/site/rat-report.html
>
> KEYS:
>   https://downloads.apache.org/commons/KEYS
>
> Please review the release candidate and vote.
> This vote will close no sooner than 72 hours from now.
>
>   [ ] +1 Release these artifacts
>   [ ] +0 OK, but...
>   [ ] -0 OK, but really should fix...
>   [ ] -1 I oppose this release because...
>
> Thank you,
>
> Gary Gregory,
> Release Manager (using key DEADBEEF)
>
> For following is intended as a helper and refresher for reviewers.
>
> Validating a release candidate
> ==============================
>
> These guidelines are NOT complete.
>
> Requirements: Git, Java, Maven.
>
> You can validate a release from a release candidate (RC) tag as follows.
>
> 1a) Clone and checkout the RC tag
>
> git clone https://gitbox.apache.org/repos/asf/commons-parent.git
> --branch commons-parent-57-RC1 commons-parent-57-RC1
> cd commons-parent-57-RC1
>
> 1b) Download and unpack the source archive from:
>
> https://dist.apache.org/repos/dist/dev/commons/commons-parent/57-RC1/source
>
> 2) Check Apache licenses
>
> This step is not required if the site includes a RAT report page which
> you then must check.
>
> mvn apache-rat:check
>
> 3) Check binary compatibility
>
> Older components still use Apache Clirr:
>
> This step is not required if the site includes a Clirr report page
> which you then must check.
>
> mvn clirr:check
>
> Newer components use JApiCmp with the japicmp Maven Profile:
>
> This step is not required if the site includes a JApiCmp report page
> which you then must check.
>
> mvn install -DskipTests -P japicmp japicmp:cmp
>
> 4) Build the package
>
> mvn -V clean package
>
> You can record the Maven and Java version produced by -V in your VOTE reply.
> To gather OS information from a command line:
> Windows: ver
> Linux: uname -a
>
> 5) Build the site for a single module project
>
> Note: Some plugins require the components to be installed instead of packaged.
>
> mvn site
> Check the site reports in:
> - Windows: target\site\index.html
> - Linux: target/site/index.html
>
> -the end-
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to