From 55c3dd59133cf2c3e9d50ae404ba3c63e82389aa Mon Sep 17 00:00:00 2001 From: Dave Hadka Date: Sun, 24 Dec 2023 20:17:03 -0700 Subject: [PATCH] Update to use JLink / JPackage --- .github/workflows/package.yml | 99 +++------------ package/README.md | 20 --- package/j3 | 8 -- package/j3.bat | 5 - pom.xml | 115 ++++++++++++++---- .../j3/colormap/impl/inferno.cmap | 0 .../j3/colormap/impl/magma.cmap | 0 .../j3/colormap/impl/plasma.cmap | 0 .../j3/colormap/impl/viridis.cmap | 0 src/packaging/appicon.icns | Bin 0 -> 5497 bytes src/packaging/appicon.ico | Bin 0 -> 15086 bytes src/packaging/appicon.png | Bin 0 -> 858 bytes src/packaging/linux-jpackage.txt | 11 ++ src/packaging/osx-jpackage.txt | 13 ++ src/packaging/windows-jpackage.txt | 18 +++ 15 files changed, 149 insertions(+), 140 deletions(-) delete mode 100644 package/README.md delete mode 100644 package/j3 delete mode 100644 package/j3.bat rename src/main/{java => resources}/j3/colormap/impl/inferno.cmap (100%) rename src/main/{java => resources}/j3/colormap/impl/magma.cmap (100%) rename src/main/{java => resources}/j3/colormap/impl/plasma.cmap (100%) rename src/main/{java => resources}/j3/colormap/impl/viridis.cmap (100%) create mode 100644 src/packaging/appicon.icns create mode 100644 src/packaging/appicon.ico create mode 100644 src/packaging/appicon.png create mode 100644 src/packaging/linux-jpackage.txt create mode 100644 src/packaging/osx-jpackage.txt create mode 100644 src/packaging/windows-jpackage.txt diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 5951c03..68e4390 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -2,96 +2,33 @@ name: Package on: push: - branches: [ master ] + workflow_dispatch: jobs: - java: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '17' - - - name: Maven Package - run: mvn -Pdesktop package - - - name: Create distribution - run: | - mkdir staging - mkdir staging/J3 - cp -r target/lib/ staging/J3/lib - cp target/j3-*.jar staging/J3/lib - cp -r data/ staging/J3/data - cp -r animations staging/J3/animations - cp package/* staging/J3 - - - name: Upload - uses: actions/upload-artifact@v4 - with: - name: J3 - path: staging - - native: + package: strategy: matrix: - include: - - name: Windows - os: windows-latest - profile: desktop - path: x86_64-windows - exe: j3.exe - - name: Linux - os: ubuntu-latest - profile: desktop - path: x86_64-linux - exe: j3 + os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - name: Add msbuild to PATH (Windows) - if: runner.os == 'Windows' - uses: microsoft/setup-msbuild@v1.1 - - - name: Visual Studio shell (Windows) - if: runner.os == 'Windows' - uses: egor-tensin/vs-shell@v2 - - - name: Install dependencies (Linux) - if: runner.os == 'Linux' - run: | - sudo apt update - sudo apt install libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libgl-dev libgtk-3-dev libpango1.0-dev libxtst-dev - - - name: Setup Gluon's GraalVM - uses: gluonhq/setup-graalvm@master - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - #- name: Gluon License - # uses: gluonhq/gluon-build-license@v1 - # with: - # gluon-license: ${{ secrets.GLUON_LICENSE }} - - - name: Maven Package - run: mvn -P${{ matrix.profile }} package + - name: Set up JDK 17 + uses: actions/setup-java@v2 + with: + java-version: 18.0.2 + distribution: 'zulu' + java-package: 'jdk+fx' + cache: 'maven' - - name: Gluon Build and Package - run: mvn -P${{ matrix.profile }} gluonfx:build gluonfx:package - - - name: Create distribution - run: | - mkdir staging - mkdir staging/J3 - cp target/gluonfx/${{ matrix.path }}/${{ matrix.exe }} staging/J3 - cp -r data/ staging/J3/data - cp -r animations staging/J3/animations + - name: Maven build + run: mvn clean install - - name: Upload + - name: Upload release uses: actions/upload-artifact@v4 with: - name: J3-${{ matrix.name }} - path: staging + name: J3-${{ runner.os }} + path: | + ./target/*.msi + ./target/*.dmg + ./target/*.deb diff --git a/package/README.md b/package/README.md deleted file mode 100644 index 15a4dc6..0000000 --- a/package/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# J3 - 3D Interactive Visualization in Java - -## Prerequisites - -1. Download and install Java 17+ -2. Download and install JavaFX SDK - https://gluonhq.com/products/javafx/ -3. Set the environment variables `JAVA_HOME` and `JAVAFX_HOME` - -## Usage - -Either use the provided `j3` command to run the application or launch from the terminals with: - -```bash - -# Windows -java --module-path %JAVAFX_HOME%\lib --add-modules javafx.controls --class-path "lib/*" j3.GUI - -# Linux -java --module-path ${JAVAFX_HOME}\lib --add-modules javafx.controls --class-path "lib/*" j3.GUI -``` \ No newline at end of file diff --git a/package/j3 b/package/j3 deleted file mode 100644 index ce716db..0000000 --- a/package/j3 +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -if [ -z "${JAVAFX_HOME}" ]; then - echo "JAVAFX_HOME environment variable must be set!" - exit -1 -fi - -java --module-path ${JAVAFX_HOME}\lib --add-modules javafx.controls --class-path "lib/*" j3.GUI \ No newline at end of file diff --git a/package/j3.bat b/package/j3.bat deleted file mode 100644 index d5c78dd..0000000 --- a/package/j3.bat +++ /dev/null @@ -1,5 +0,0 @@ -@echo off - -if not defined JAVAFX_HOME echo JAVAFX_HOME environment variable must be set! - -java --module-path %JAVAFX_HOME%\lib --add-modules javafx.controls --class-path "lib/*" j3.GUI \ No newline at end of file diff --git a/pom.xml b/pom.xml index 29478c0..f21c534 100644 --- a/pom.xml +++ b/pom.xml @@ -5,16 +5,25 @@ org.j3 j3 2.0.0 + J3 - Java 3D Visualization Tool - UTF-8 17 21 - 0.0.8 - 1.0.22 - 6.2.2 - 4.0.16 + + J3 + ${project.version} j3.GUI + javafx.controls,java.logging,java.prefs + + UTF-8 + + e110edba-dbba-4f28-9c9b-ec09ad39522c + Project-Platypus + + + + @@ -66,11 +75,31 @@ + + + kr.motd.maven + os-maven-plugin + 1.7.0 + + + + + ${project.basedir}/src/packaging + true + ${project.build.directory}/packaging + + + ${project.basedir}/src/main/resources + true + + org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 + maven-install-plugin + + true + maven-dependency-plugin @@ -88,33 +117,67 @@ - org.openjfx - javafx-maven-plugin - ${javafx.plugin.version} + org.apache.maven.plugins + maven-jar-plugin - ${main.class} + ${project.build.directory}/lib - com.gluonhq - gluonfx-maven-plugin - ${gluonfx.plugin.version} + org.openjfx + javafx-maven-plugin + 0.0.8 - ${gluonfx.target} ${main.class} - --report-unsupported-elements-at-runtime - - com.sun.prism.shader.Solid_TextureRGB_AlphaTest_Loader - - - .*\\.properties$ - .*\\.cmap$ - - - Project-Platypus - + + io.github.wiverson + jtoolprovider-plugin + 1.0.34 + + + jlink + package + + java-tool + + + jlink + ${project.build.directory}/jvm-image/ + ${jvm.modules} + ${project.build.directory}/jvm-image + + --strip-native-commands + --no-header-files + --strip-debug + --no-man-pages + --compress=2 + + + + + jpackage + install + + java-tool + + + jpackage + true + true + true + ${project.build.directory}/installer-work + @${project.build.directory}/packaging/${os.detected.name}-jpackage.txt + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + diff --git a/src/main/java/j3/colormap/impl/inferno.cmap b/src/main/resources/j3/colormap/impl/inferno.cmap similarity index 100% rename from src/main/java/j3/colormap/impl/inferno.cmap rename to src/main/resources/j3/colormap/impl/inferno.cmap diff --git a/src/main/java/j3/colormap/impl/magma.cmap b/src/main/resources/j3/colormap/impl/magma.cmap similarity index 100% rename from src/main/java/j3/colormap/impl/magma.cmap rename to src/main/resources/j3/colormap/impl/magma.cmap diff --git a/src/main/java/j3/colormap/impl/plasma.cmap b/src/main/resources/j3/colormap/impl/plasma.cmap similarity index 100% rename from src/main/java/j3/colormap/impl/plasma.cmap rename to src/main/resources/j3/colormap/impl/plasma.cmap diff --git a/src/main/java/j3/colormap/impl/viridis.cmap b/src/main/resources/j3/colormap/impl/viridis.cmap similarity index 100% rename from src/main/java/j3/colormap/impl/viridis.cmap rename to src/main/resources/j3/colormap/impl/viridis.cmap diff --git a/src/packaging/appicon.icns b/src/packaging/appicon.icns new file mode 100644 index 0000000000000000000000000000000000000000..0a91cf625ab753b301008d01575fa81ce13b6773 GIT binary patch literal 5497 zcmeHKe@Glh6yAwxQ;{M;L_!deA|fJUC0Ge!r4$hnksu+2AQB`wj1@UVM8x~ydC`k8 z)+V8paus7!2_=Y#h@^6Vgb<2^ASIL_B0;2xNDvV@4DFu$&>ICY{qom zAiovNWAu~P7zE)r`oG=B{Z(5l=I=A{&Q=kgo$-p&nb(mD#Vw|Y5aIFR-8ah4rv)K8 zg&6(EvgcVzpRcp*IVdB0(I=-RkVkB1oP9(cradFlQ-vrd1VPKAX;IN5ME!QQwDW07 zWbKa!pOi{d6j8SjXDSPoB}!`lR&h=H@pzW09Ywfqa2}oLBtrHCktG4+CZsfmkTPBv zPALq4UK7-epa}+$K-|Mm1IQg+1`*n41mS0CogP9EzX^C`Msm{mFcuH)EN#Xb7q&Ic8x4K%} zJFg*5#)Z(#T-bG13wgTh@dnaqd#X=}?C=g$icaTi1R+|0g&3*YjIO=fgf->xHv;Kp zhk(4xBhUz@qX9JAw@=AkGHkL zF?S3%VLmcgNz_tPgqwEGCvr)wtuAA7w=XW{A%C0>UN?SnXvQh+(>-S0h;w~#z;&IA zPs#(#Km9@>Y&QbN9Y`My8n+?6I7hLv_s2*-R(Y-f?Bl(SA1lA5_oFH(9jjl!G`LhS zcnk7-$RTtXgAAgaupPt=??4XFkSRmP2<%%J5X)hlEN`QqE_rjs^^7szNDUx9$8qXj zJb=2t50X#5rw^9RU&jD<_sLwWj)30}T=*EWGd`Tzr&M5kY2^KAXWm*Y7* zo-;k?{*yerE^Bq_M^URk_=5HB0c4h!6z1jT(nFUt;wS%3LJ6Gj= ziG60d#W(3i;{TADrPqo^(h&F1at8teOx^0rC$$W^aWc-$g_9EmC zU=dnZ9W|y><@dX(^z3!+z-^;1W?OvNPp(jEZ4=^D&EU+_$nSybM473&1UX#7FZD2_ zLm2~oM@_#2Pi9Pj?@i`(;yG!sBSg^8>B&-?rN@%`@Z%=dWg{eHjRuV0_{ug{Nf zi=sKv+-Tv#h`+|@i}#}FBh?!JZU2n?2V`s3#O)PP^y!i)`jDnf8ez`(f1_vVRHCyIWPe#Yly&e1bX}+5 zS7g_NJ%S`5$$jyErwqJm(#&oE!2IY6uWNwMv><2yhV)~ZC z6_99g?}vOZ+}p!qusui%OGxg~PVm2|Je0Gv=iWoz92i*g7yxOOvLXF8eB;^>@dgiT=Q z%$MV56$0mPrmwRae|DVnHV-U~BXA9RA$TU5ex*xdYESDddk5N^yWssw#|il()?wHV zI$JM+&Xzuy8?vdSoH#WWi?SOu7B69aCF5lAMa=zieC03*i?i5ON{4uwd&L%yq0RS= zO!K7q(t14souD(n?D@h+J6Qa;)OWb?X)goKjdb)pF$@pjDLjO3NW7=IenNF@_1t9f zRql0lX>W}CwMM&O9W;TiUwc^h_U~b-YnQc--BxhpA8>8y>wpp1<;qn@RtMKX_P1cZ zuanls#*cr{wV_}4{)-{s$hDU(|Ic09EOl)C_=j9O`ZeAkxH7j+pSylE220%jv^x5J z{Ejpmw;y}$1-pK&%O zd)DF)QqQ#)(f6;v%a3bqboYSvo5gd>=g2pjZq^c;Jn{96d=s94UH1#>ItO%)<~|Rx z(YfkgM|WE8iUZmgT5rlndF76+IN0TmZ~0-nA6~*eSZne;C3f!q)i_MNvzQ-bU9isD zRw8SKMNk;et(uWcJBRGevbQg$o7HmKi$v< zt3a{;0NIG(yPfaPZDV)P@gYBF+_CdD*uMwb5M!J#ZDCf$L|K z_GRcZd+IuO`ax^W)m2?NY5%P>{j?I@1+X8E!V&0%j<{4?a{oTG7}-uZ0|PJ!%1L&G z?)_>Sx%pfDI`V1#URC58$*~voj`A_o z!g_cOx{lu=*EfSAIh12Vehn~b&C?zNn}<8pYs!f+-L~X=(aB%eG5(v;bmvht9{FDI z@_$LYzNo+Hwjb~9$8vnaszI3hILh;L$<2!UuOZ(Gs9DkwlPrL`9ukU6LAk#A+dS}7LMCHW4%gB;nnhyR#`A_+lg|5Cg>lt=? znqTWjS9{vcU-f3|FSo>3DF4KNACxy9{`(U0pY%;IuTNLMME(t~UeP-K^-a_t|C2@i z`F8jYouA8n-MnplH-q-HeeUP3_N3o-UAw$>e1*n8(|2&}>tHvu zKoe{R-GfIUDfidN6VJB1xl12kNzV_8o9XvU^ptv9965fI?k|d8^4TU76T4dIfj96R zw7(LcWkWvl$njm#{4F+q_kzvC5cN9it7KUs|JCKj!S_Aq8dR?>*QalfPyNPcIuDd!?G<=!9bm_L;xA)iI% z_&k{qN3k}S@=5<9oV3(reA literal 0 HcmV?d00001 diff --git a/src/packaging/appicon.png b/src/packaging/appicon.png new file mode 100644 index 0000000000000000000000000000000000000000..f1fb7065ba6345964dfe65819ceb49f377148144 GIT binary patch literal 858 zcmV-g1Eu_lP)2MKxIXCqYA6%fN)gNGp@)J9 zg775?q9;cP4AP={?GHgIR3s5$s5w3CJ9+N8d*5@%vky*izp!DLv(|6@);;&0v-YM> zpFVviGFRXhEXD%N#ca%Kt!pp`^RNgvVPS>le5}RGcoTcE6)Q0{cLVoebe!uzLTeR1 ztH}KwTQDhC12eHs_=MiZiA3RVg->)NmPd4+tuS6*@8N=6O%!=2QSiQsy!|~IFRlmj z+h=>C*wTu;?+USB<2B)~?!^xY&5`Wx@pPitk}f&Za7Orkuf#y<`egAt`)f|)V>}Tl zG>RL$pj(Sss2gBd^ z4V!RbeVb_>6>ng{I5aln6MTw43L2;JJ>JLNIv=-LNHs8j92$ob8s+r?F3x3qjLnH+ z^Lor5#HoZvY`v1vJ9s2f=-M9h2eBGA2u&}=4&kjE(>;N!^4U)}FsG*O41AN&UQ<)M zjZKLnvomN932*GO_6r%b|6^mMz^Jf0%fW{c?d_Sgk#1mmCjD&@?T0dHgAI`aqvC_w zBw>4a*EsZJqsmYXza69+n3jnDQP{xry2ssB(jBScHOhMN2ChuRf84shwg>G2d{xjq zsryFhoJie)%M$UsTi1`P9{ARjG>7Zk?IiUWO`YdFT!=Y_I}&mC;;&ZRKf-UP5n{8@ zDd`FFwn+RJcvbkpzNr1I=qKqWvk==8|I#IXI)0Ail-E%_hfA9>KE~Ea@dFh(7vXkc zFxxMT(Fd_ln1fbmVCqcqlFkMi*}FEy>)Or#Df6`0H1BF};Q8}wr#rK7N$Gzh&YC|Y z97s)Ao)L~ZmI<5hTb(_f{!;qwJ7FkpUd|N${s@;t7#`HnxqTDdjGe;s kd$op6%KG%_)93%qznT7z-+kb@aR2}S07*qoM6N<$g4xiacmMzZ literal 0 HcmV?d00001 diff --git a/src/packaging/linux-jpackage.txt b/src/packaging/linux-jpackage.txt new file mode 100644 index 0000000..21feb7f --- /dev/null +++ b/src/packaging/linux-jpackage.txt @@ -0,0 +1,11 @@ +--name ${app.name} +--icon "${project.basedir}/appicon.png" +--dest "${project.build.directory}" +--main-jar ${project.build.finalName}.jar +--main-class ${main-class} +--input "${project.build.directory}/lib" +--app-version ${app.version} +--runtime-image "${project.build.directory}/jvm-image" +--temp "${project.build.directory}/installer-work" +--app-content "${project.basedir}/data" +--app-content "${project.basedir}/animations" diff --git a/src/packaging/osx-jpackage.txt b/src/packaging/osx-jpackage.txt new file mode 100644 index 0000000..4deccb8 --- /dev/null +++ b/src/packaging/osx-jpackage.txt @@ -0,0 +1,13 @@ +--name ${app.name} +--icon "${project.basedir}/appicon.icns" +--dest "${project.build.directory}" +--main-jar ${project.build.finalName}.jar +--main-class ${main-class} +--input "${project.build.directory}/lib" +--app-version ${app.version} +--runtime-image "${project.build.directory}/jvm-image" +--temp "${project.build.directory}/installer-work" +--app-content "${project.basedir}/data" +--app-content "${project.basedir}/animations" +${macos.sign} +${macos.sign.identity} diff --git a/src/packaging/windows-jpackage.txt b/src/packaging/windows-jpackage.txt new file mode 100644 index 0000000..e15f693 --- /dev/null +++ b/src/packaging/windows-jpackage.txt @@ -0,0 +1,18 @@ +--type msi +--name ${app.name} +--win-menu +--win-menu-group ${windows.vendor} +--vendor ${windows.vendor} +--icon "${project.basedir}/src/packaging/appicon.ico" +--dest "${project.build.directory}" +--main-jar ${project.build.finalName}.jar +--main-class ${main.class} +--input "${project.build.directory}/lib" +--app-version ${app.version} +--runtime-image "${project.build.directory}/jvm-image" +--temp "${project.build.directory}/installer-work" +--win-upgrade-uuid ${windows.upgrade.uuid} +--description "${project.description}" +--copyright "Copyright ${windows.vendor}" +--app-content "${project.basedir}/data" +--app-content "${project.basedir}/animations" \ No newline at end of file