diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index a08899a596..e60a48aa8e 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,17 +34,28 @@ permissions: issues: write jobs: - build-linux-jdk8-fx: + build-test: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + java-version: [8, 17, 21, 25] steps: - uses: actions/checkout@v1 - name: Set up JDK 8 + if: matrix.java-version == 8 uses: actions/setup-java@v1 with: java-version: 1.8 java-package: jdk+fx + - name: Set up JDK + if: matrix.java-version != 8 + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: ${{ matrix.java-version }} - name: Cache Maven dependencies uses: actions/cache@v4 with: @@ -54,8 +65,12 @@ jobs: ${{ runner.os }}-m2 - name: Run Unit Tests run: | + MVN_ARGS="" + if [ "${{ matrix.java-version }}" != "8" ]; then + MVN_ARGS="-Dspotbugs.skip=true" + fi cd maven - mvn clean verify -DunitTests=true -pl core-unittests -am -Dmaven.javadoc.skip=true -Plocal-dev-javase + mvn clean verify -DunitTests=true -pl core-unittests -am -Dmaven.javadoc.skip=true -Plocal-dev-javase $MVN_ARGS cd .. - name: Prepare Codename One binaries for Maven plugin tests run: | @@ -73,7 +88,7 @@ jobs: -Dcn1.binaries="${CN1_BINARIES}" \ -pl codenameone-maven-plugin -am -Plocal-dev-javase test - name: Generate static analysis HTML summaries - if: ${{ always() }} + if: ${{ always() && matrix.java-version == 8 }} env: QUALITY_REPORT_TARGET_DIRS: maven/core-unittests/target QUALITY_REPORT_SERVER_URL: ${{ github.server_url }} @@ -82,7 +97,7 @@ jobs: QUALITY_REPORT_GENERATE_HTML_ONLY: "1" run: python3 .github/scripts/generate-quality-report.py - name: Collect quality artifacts - if: ${{ always() }} + if: ${{ always() && matrix.java-version == 8 }} run: | set -euo pipefail mkdir -p quality-artifacts/static-analysis @@ -110,14 +125,14 @@ jobs: echo "No quality artifacts were generated." > quality-artifacts/README.txt fi - name: Upload quality artifacts - if: ${{ always() }} + if: ${{ always() && matrix.java-version == 8 }} id: upload-quality-artifacts uses: actions/upload-artifact@v4 with: name: quality-artifacts path: quality-artifacts - name: Publish quality report previews - if: ${{ always() && github.server_url == 'https://github.com' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} + if: ${{ always() && matrix.java-version == 8 && github.server_url == 'https://github.com' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} id: publish-quality-previews env: GITHUB_TOKEN: ${{ github.token }} @@ -183,7 +198,7 @@ jobs: echo "jacoco_url=${preview_base}/coverage/index.html" >> "$GITHUB_OUTPUT" fi - name: Generate quality report summary - if: ${{ always() }} + if: ${{ always() && matrix.java-version == 8 }} env: QUALITY_REPORT_TARGET_DIRS: maven/core-unittests/target QUALITY_REPORT_SERVER_URL: ${{ github.server_url }} @@ -199,13 +214,13 @@ jobs: JACOCO_HTML_URL: ${{ steps.publish-quality-previews.outputs.jacoco_url }} run: python3 .github/scripts/generate-quality-report.py - name: Upload quality report summary - if: ${{ always() }} + if: ${{ always() && matrix.java-version == 8 }} uses: actions/upload-artifact@v4 with: name: quality-report path: quality-report.md - name: Publish quality report comment - if: ${{ github.event_name == 'pull_request' }} + if: ${{ github.event_name == 'pull_request' && matrix.java-version == 8 }} uses: actions/github-script@v7 with: script: | @@ -217,15 +232,27 @@ jobs: wget https://github.com/codenameone/cn1-binaries/archive/refs/heads/master.zip unzip master.zip -d .. mv ../cn1-binaries-master ../cn1-binaries - - name: Build with Ant - run: xvfb-run ant test-javase - name: Build CLDC11 JAR - run: ant -noinput -buildfile Ports/CLDC11/build.xml jar + run: | + ANT_OPTS_ARGS="" + if [ "${{ matrix.java-version }}" != "8" ]; then + ANT_OPTS_ARGS="-Djavac.source=1.8 -Djavac.target=1.8" + fi + ant $ANT_OPTS_ARGS -noinput -buildfile Ports/CLDC11/build.xml jar + - name: Build with Ant + run: | + ANT_OPTS_ARGS="" + if [ "${{ matrix.java-version }}" != "8" ]; then + ANT_OPTS_ARGS="-Djavac.source=1.8 -Djavac.target=1.8" + fi + xvfb-run ant $ANT_OPTS_ARGS test-javase - name: Build Release + if: matrix.java-version == 8 run: ant -noinput -buildfile CodenameOne/build.xml weeklyLibUpdate - name: Build JavaDocs + if: matrix.java-version == 8 run: | cd CodenameOne mkdir -p build @@ -240,12 +267,18 @@ jobs: cd .. - name: Build iOS Port - run: ant -noinput -buildfile Ports/iOSPort/build.xml jar + run: | + ANT_OPTS_ARGS="" + if [ "${{ matrix.java-version }}" != "8" ]; then + ANT_OPTS_ARGS="-Djavac.source=1.8 -Djavac.target=1.8" + fi + ant $ANT_OPTS_ARGS -noinput -buildfile Ports/iOSPort/build.xml jar - name: Build iOS VM API run: mvn -f vm/JavaAPI/pom.xml package - name: Upload a Build Artifact + if: matrix.java-version == 8 uses: actions/upload-artifact@v4 with: name: JavaAPI.jar @@ -255,27 +288,41 @@ jobs: run: mvn -f vm/ByteCodeTranslator/pom.xml package - name: Build CLDC 11 VM - run: ant -noinput -buildfile Ports/CLDC11/build.xml jar + run: | + ANT_OPTS_ARGS="" + if [ "${{ matrix.java-version }}" != "8" ]; then + ANT_OPTS_ARGS="-Djavac.source=1.8 -Djavac.target=1.8" + fi + ant $ANT_OPTS_ARGS -noinput -buildfile Ports/CLDC11/build.xml jar - name: Upload a Build Artifact + if: matrix.java-version == 8 uses: actions/upload-artifact@v4 with: name: ByteCodeTranslator.jar path: vm/ByteCodeTranslator/target/ByteCodeTranslator-1.0-SNAPSHOT.jar - name: Upload a Build Artifact + if: matrix.java-version == 8 uses: actions/upload-artifact@v4 with: name: CLDC11.jar path: Ports/CLDC11/dist/CLDC11.jar - name: Build Android Port - run: ant -noinput -buildfile Ports/Android/build.xml jar + run: | + ANT_OPTS_ARGS="" + if [ "${{ matrix.java-version }}" != "8" ]; then + ANT_OPTS_ARGS="-Djavac.source=1.8 -Djavac.target=1.8" + fi + ant $ANT_OPTS_ARGS -noinput -buildfile Ports/Android/build.xml jar - name: Packaging Everything + if: matrix.java-version == 8 run: zip -j result.zip CodenameOne/javadocs.zip CodenameOne/dist/CodenameOne.jar CodenameOne/updatedLibs.zip Ports/JavaSE/dist/JavaSE.jar build/CodenameOneDist/CodenameOne/demos/CodenameOne_SRC.zip - name: Copying Files to Server + if: matrix.java-version == 8 uses: marcodallasanta/ssh-scp-deploy@v1.0.5 with: host: ${{ secrets.WP_HOST }} @@ -284,6 +331,7 @@ jobs: local: result.zip - name: Upload a Build Artifact + if: matrix.java-version == 8 uses: actions/upload-artifact@v4 with: name: JavaSE.jar diff --git a/maven/core/pom.xml b/maven/core/pom.xml index 7759148db0..9a0c96f641 100644 --- a/maven/core/pom.xml +++ b/maven/core/pom.xml @@ -44,13 +44,25 @@ maven-compiler-plugin - 1.5 - 1.5 + ${maven.compiler.source} + ${maven.compiler.target} + + + modern-jdk + + [9,) + + + 1.8 + 1.8 + + + \ No newline at end of file diff --git a/maven/parparvm/pom.xml b/maven/parparvm/pom.xml index c4da9c9200..0c667f5286 100644 --- a/maven/parparvm/pom.xml +++ b/maven/parparvm/pom.xml @@ -43,6 +43,8 @@ ../../vm/ByteCodeTranslator/src ../../vm/JavaAPI/src + 1.5 + 1.5 @@ -85,15 +87,6 @@ org.apache.maven.plugins maven-antrun-plugin - - - com.sun - tools - 1.5.0 - system - ${java.home}/../lib/tools.jar - - compile-java-api @@ -105,8 +98,8 @@ @@ -159,6 +152,41 @@ - + + + + legacy-jdk-tools + + (,9) + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + com.sun + tools + 1.5.0 + system + ${java.home}/../lib/tools.jar + + + + + + + + modern-jdk + + [9,) + + + 1.8 + 1.8 + + + \ No newline at end of file diff --git a/vm/JavaAPI/pom.xml b/vm/JavaAPI/pom.xml index a74120c9bb..4b9eac6a49 100644 --- a/vm/JavaAPI/pom.xml +++ b/vm/JavaAPI/pom.xml @@ -13,6 +13,24 @@ jar JavaAPI + + 1.5 + 1.5 + + + + + modern-jdk + + [9,) + + + 1.8 + 1.8 + + + + src @@ -21,8 +39,8 @@ maven-compiler-plugin 3.11.0 - 1.5 - 1.5 + ${maven.compiler.source} + ${maven.compiler.target} -Xlint:-options