-
Notifications
You must be signed in to change notification settings - Fork 1
/
build_app.bat
84 lines (66 loc) · 3.13 KB
/
build_app.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
@ECHO OFF
rem ------ ENVIRONMENT --------------------------------------------------------
rem The script depends on various environment variables to exist in order to
rem run properly. The java version we want to use, the location of the java
rem binaries (java home), and the project version as defined inside the pom.xml
rem file, e.g. 1.0-SNAPSHOT.
rem
rem PROJECT_VERSION: version used in pom.xml, e.g. 1.0-SNAPSHOT
rem APP_VERSION: the application version, e.g. 1.0.0, shown in "about" dialog
set JAVA_VERSION=15
set MAIN_JAR=protoerp-%PROJECT_VERSION%.jar
rem ------ SETUP DIRECTORIES AND FILES ----------------------------------------
rem Remove previously generated java runtime and installers. Copy all required
rem jar files into the input/libs folder.
IF EXIST target\java-runtime rmdir /S /Q .\target\java-runtime
IF EXIST target\installer rmdir /S /Q target\installer
xcopy /S /Q target\libs\* target\installer\input\libs\
copy target\%MAIN_JAR% target\installer\input\libs\
rem ------ REQUIRED MODULES ---------------------------------------------------
rem Use jlink to detect all modules that are required to run the application.
rem Starting point for the jdep analysis is the set of jars being used by the
rem application.
echo detecting required modules
"%JAVA_HOME%\bin\jdeps" ^
--multi-release %JAVA_VERSION% ^
--ignore-missing-deps ^
--class-path "target\installer\input\libs\*" ^
--print-module-deps target\classes\gr\codebb\protoerp\App.class > temp.txt
set /p detected_modules=<temp.txt
echo detected modules: %detected_modules%
rem ------ MANUAL MODULES -----------------------------------------------------
rem jdk.crypto.ec has to be added manually bound via --bind-services or
rem otherwise HTTPS does not work.
rem
rem See: https://bugs.openjdk.java.net/browse/JDK-8221674
set manual_modules=jdk.crypto.ec,java.se
echo manual modules: %manual_modules%
rem ------ RUNTIME IMAGE ------------------------------------------------------
rem Use the jlink tool to create a runtime image for our application. We are
rem doing this is a separate step instead of letting jlink do the work as part
rem of the jpackage tool. This approach allows for finer configuration and also
rem works with dependencies that are not fully modularized, yet.
echo creating java runtime image
call "%JAVA_HOME%\bin\jlink" ^
--no-header-files ^
--no-man-pages ^
--compress=2 ^
--strip-debug ^
--add-modules %detected_modules%,%manual_modules% ^
--output target/java-runtime
rem ------ PACKAGING ----------------------------------------------------------
rem A loop iterates over the various packaging types supported by jpackage. In
rem the end we will find all packages inside the target/installer directory.
for %%s in ("app-image") do call "%JAVA_HOME%\bin\jpackage" ^
--type %%s ^
--dest target/installer ^
--input target/installer/input/libs ^
--name ProtoERP ^
--main-class gr.codebb.protoerp.AppLauncher ^
--main-jar %MAIN_JAR% ^
--java-options -Xmx2048m ^
--runtime-image target/java-runtime ^
--icon src/main/logo/windows/ProtoERP.ico ^
--app-version %APP_VERSION% ^
--vendor "Codebb" ^
--copyright "Copyright 2013-2020 codebb.gr."