105 lines
2.3 KiB
Bash
Executable File
105 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
# shellcheck disable=SC1091
|
||
source "$SCRIPT_DIR/common.sh"
|
||
|
||
load_local_env
|
||
|
||
MAVEN_REPO_LOCAL="${MAVEN_REPO_LOCAL:-$ROOT_DIR/var/local-maven-repo}"
|
||
INSTALL_PRIVATE_SCRIPT="$SCRIPT_DIR/install_private_maven.py"
|
||
|
||
usage() {
|
||
cat <<'EOF'
|
||
用法:
|
||
./build_local_backend.sh # 构建全部 Java 后端 jar(需要 JDK 17)
|
||
./build_local_backend.sh auth live # 只构建指定服务
|
||
EOF
|
||
}
|
||
|
||
all_java_services() {
|
||
cat <<'EOF'
|
||
auth
|
||
console
|
||
external
|
||
game-fruit
|
||
gateway
|
||
live
|
||
order
|
||
other
|
||
scheduling
|
||
visual-monitor
|
||
wallet
|
||
EOF
|
||
}
|
||
|
||
module_for_service() {
|
||
case "$1" in
|
||
gateway) echo "rc-gateway" ;;
|
||
auth) echo "rc-auth" ;;
|
||
external) echo "rc-service/rc-service-external/external-start" ;;
|
||
other) echo "rc-service/rc-service-other/other-start" ;;
|
||
live) echo "rc-service/rc-service-live/live-start" ;;
|
||
order) echo "rc-service/rc-service-order/order-start" ;;
|
||
wallet) echo "rc-service/rc-service-wallet/wallet-start" ;;
|
||
console) echo "rc-service/rc-service-console/console-start" ;;
|
||
visual-monitor) echo "rc-visual/visual-monitor" ;;
|
||
scheduling) echo "rc-scheduling" ;;
|
||
game-fruit) echo "rc-service-game/game-fruit" ;;
|
||
*)
|
||
return 1
|
||
;;
|
||
esac
|
||
}
|
||
|
||
select_services() {
|
||
if [ "$#" -eq 0 ]; then
|
||
all_java_services
|
||
return 0
|
||
fi
|
||
|
||
for service in "$@"; do
|
||
if ! module_for_service "$service" >/dev/null; then
|
||
echo "unknown java service: $service" >&2
|
||
usage >&2
|
||
exit 1
|
||
fi
|
||
printf '%s\n' "$service"
|
||
done
|
||
}
|
||
|
||
mkdir -p "$MAVEN_REPO_LOCAL"
|
||
|
||
require_java_17
|
||
|
||
python3 "$INSTALL_PRIVATE_SCRIPT" \
|
||
--source-root "$JAVA_REPO_DIR/maven_private" \
|
||
--maven-repo-local "$MAVEN_REPO_LOCAL"
|
||
|
||
SELECTED_SERVICES=()
|
||
while IFS= read -r service; do
|
||
[ -n "$service" ] || continue
|
||
SELECTED_SERVICES+=("$service")
|
||
done <<EOF
|
||
$(select_services "$@")
|
||
EOF
|
||
|
||
MODULES=()
|
||
for service in "${SELECTED_SERVICES[@]}"; do
|
||
MODULES+=("$(module_for_service "$service")")
|
||
done
|
||
|
||
MODULE_LIST="$(IFS=,; echo "${MODULES[*]}")"
|
||
echo "building java services: ${SELECTED_SERVICES[*]}"
|
||
|
||
mvn \
|
||
-P local \
|
||
-Dmaven.repo.local="$MAVEN_REPO_LOCAL" \
|
||
-DskipTests \
|
||
-Dmaven.test.skip=true \
|
||
package \
|
||
-pl "$MODULE_LIST" \
|
||
-am \
|
||
-f "$JAVA_REPO_DIR/pom.xml"
|