Skip to content

Commit e70b589

Browse files
committed
feat: add java_build_utils.sh
1 parent b7d4aaa commit e70b589

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed

lib/java_build_utils.sh

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
#!/bin/bash
2+
#
3+
# java and maven util functions for build.
4+
#
5+
################################################################################
6+
# api functions:
7+
#
8+
# - jvb::get_java_version
9+
# - jvb::java_cmd
10+
#
11+
# - jvb::mvn_cmd
12+
################################################################################
13+
#
14+
#_ source guard start _#
15+
[ -z "${__source_guard_364DF1B5_9CA2_44D3_9C62_CDF6C2ECB24F:+dummy}" ] || return 0
16+
__source_guard_364DF1B5_9CA2_44D3_9C62_CDF6C2ECB24F="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
17+
readonly __source_guard_364DF1B5_9CA2_44D3_9C62_CDF6C2ECB24F
18+
#_ source guard end _#
19+
20+
set -eEuo pipefail
21+
22+
# shellcheck source=common_utils.sh
23+
source "$__source_guard_364DF1B5_9CA2_44D3_9C62_CDF6C2ECB24F/common_utils.sh"
24+
25+
#################################################################################
26+
# java operation functions
27+
#################################################################################
28+
29+
jvb::get_java_version() {
30+
"$JAVA_HOME/bin/java" -version 2>&1 | awk -F\" '/ version "/{print $2}'
31+
}
32+
33+
# shellcheck disable=SC2034
34+
readonly JVB_DEFAULT_JAVA_OPTS=(
35+
-Xmx256m -Xms256m
36+
-server -ea
37+
-Duser.language=en -Duser.country=US
38+
)
39+
40+
readonly JVB_JAVA_OPT_DEFAULT_DEBUG_PORT=5050
41+
42+
# set env variable ENABLE_JAVA_RUN_DEBUG to enable java debug mode
43+
jvb::java_cmd() {
44+
local debug_opts="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=${JVB_JAVA_OPT_DEBUG_PORT}"
45+
46+
cu::log_then_run "$JAVA_HOME/bin/java" \
47+
"${JVB_JAVA_OPTS[@]}" \
48+
${JVB_ENABLE_JAVA_RUN_VERBOSE_CLASS+-verbose:class} \
49+
${JVB_ENABLE_JAVA_RUN_DEBUG+$debug_opts} \
50+
"$@"
51+
}
52+
53+
#################################################################################
54+
# maven operation functions
55+
#################################################################################
56+
57+
readonly JVB_DEFAULT_MVN_OPTS=(
58+
-V --no-transfer-progress
59+
)
60+
61+
jvb::_find_mvn_cmd_path() {
62+
if [ -n "${JVB_MVN_PATH:-}" ]; then
63+
echo "$JVB_MVN_PATH"
64+
return
65+
fi
66+
67+
local -r maven_wrapper_name="mvnw"
68+
69+
# 1. find the mvnw from project root dir
70+
if [ -n "${PROJECT_ROOT_DIR:-}" ]; then
71+
if [ -e "$PROJECT_ROOT_DIR/$maven_wrapper_name" ]; then
72+
JVB_MVN_PATH="$PROJECT_ROOT_DIR/$maven_wrapper_name"
73+
echo "$JVB_MVN_PATH"
74+
return
75+
fi
76+
fi
77+
78+
# 2. find mvnw from parent dirs
79+
local d="$PWD"
80+
while true; do
81+
local mvnw_path="$d/$maven_wrapper_name"
82+
[ -f "$mvnw_path" ] && {
83+
JVB_MVN_PATH="$mvnw_path"
84+
echo "$JVB_MVN_PATH"
85+
return
86+
}
87+
88+
[ "/" = "$d" ] && break
89+
d=$(dirname "$d")
90+
done
91+
92+
# 3. find mvn from $PATH
93+
if command -v mvn &>/dev/null; then
94+
JVB_MVN_PATH=mvn
95+
echo "$JVB_MVN_PATH"
96+
return
97+
fi
98+
99+
cu::die "$(
100+
echo "fail to find mvn cmd!"
101+
echo "found locations:"
102+
echo " - \$PROJECT_ROOT_DIR/mvnw($PROJECT_ROOT_DIR/mvnw)"
103+
echo " - \$PWD/mvnw($PWD/mvnw) and its parent dirs"
104+
echo " - mvn on \$PATH"
105+
)"
106+
}
107+
108+
jvb::mvn_cmd() {
109+
cu::log_then_run "$(jvb::_find_mvn_cmd_path)" \
110+
"${JVB_MVN_OPTS[@]}" \
111+
${DISABLE_GIT_DIRTY_CHECK+-Dgit.dirty=false} \
112+
"$@"
113+
}
114+
115+
################################################################################
116+
# auto load sdkman.
117+
# disable by define `PREPARE_JDKS_NO_AUTO_LOAD_SDKMAN` var
118+
#
119+
# auto prepare jdks,
120+
# if `PREPARE_JDKS_INSTALL_BY_SDKMAN` is has values
121+
################################################################################
122+
123+
jvb::_set_jvb_vars_if_absent() {
124+
JVB_JAVA_OPT_DEBUG_PORT="${JVB_JAVA_OPT_DEBUG_PORT:-$JVB_JAVA_OPT_DEFAULT_DEBUG_PORT}"
125+
126+
if [ -z "${JVB_JAVA_OPTS[*]:-}" ]; then
127+
JVB_JAVA_OPTS=("${JVB_DEFAULT_JAVA_OPTS[@]}")
128+
fi
129+
130+
if [ -z "${JVB_MVN_OPTS[*]:-}" ]; then
131+
JVB_MVN_OPTS=("${JVB_DEFAULT_MVN_OPTS[@]}")
132+
fi
133+
}
134+
jvb::_set_jvb_vars_if_absent

0 commit comments

Comments
 (0)