wad-lab 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/index.js +855 -124
- package/package.json +1 -1
- package/templates/servlet-basic/script.sh +89 -0
- package/templates/servlet-flow/script.sh +89 -0
- package/templates/servlet-jdbc/script.sh +89 -0
- package/templates/servlet-session-tracking/script.sh +89 -0
- package/templates/servlet-voter-eligibility/script.sh +89 -0
package/package.json
CHANGED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Deploy a servlet/web app folder to Tomcat 9, compile servlets, and start Tomcat.
|
|
3
|
+
# Usage:
|
|
4
|
+
# ./script.sh (runs in foreground, displays logs, press Ctrl+C to stop)
|
|
5
|
+
# ./script.sh -d (runs in background daemon mode)
|
|
6
|
+
# ./script.sh [app-dir] [-d]
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
DAEMON_MODE=false
|
|
10
|
+
APP_ARG=""
|
|
11
|
+
for arg in "$@"; do
|
|
12
|
+
if [ "$arg" = "-d" ] || [ "$arg" = "--daemon" ]; then
|
|
13
|
+
DAEMON_MODE=true
|
|
14
|
+
elif [ -z "$APP_ARG" ]; then
|
|
15
|
+
APP_ARG="$arg"
|
|
16
|
+
fi
|
|
17
|
+
done
|
|
18
|
+
|
|
19
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
|
+
APP_DIR="$(cd "${APP_ARG:-$SCRIPT_DIR}" && pwd)"
|
|
21
|
+
APP_NAME="$(basename "$APP_DIR")"
|
|
22
|
+
|
|
23
|
+
# ---- locate Tomcat 9 (CATALINA_HOME, Desktop, Home, WSL /mnt/c, Git Bash /c, or /opt)
|
|
24
|
+
TOMCAT_HOME="${CATALINA_HOME:-}"
|
|
25
|
+
if [ -z "$TOMCAT_HOME" ]; then
|
|
26
|
+
for d in "$HOME"/Desktop/apache-tomcat-9* "$HOME"/Desktop/*tomcat*9* "$HOME"/Desktop/*omcat* "$HOME"/apache-tomcat-9* "$HOME"/*tomcat* /mnt/c/apache-tomcat-9* /mnt/c/apache-tomcat* /c/apache-tomcat-9* /c/apache-tomcat* /opt/apache-tomcat-9* /opt/apache-tomcat* /usr/local/apache-tomcat* "$APP_DIR"/../*tomcat*; do
|
|
27
|
+
if [ -x "$d/bin/catalina.sh" ] || [ -f "$d/bin/catalina.sh" ]; then
|
|
28
|
+
TOMCAT_HOME="$d"
|
|
29
|
+
break
|
|
30
|
+
fi
|
|
31
|
+
done
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
[ -n "$TOMCAT_HOME" ] || { echo "Tomcat not found in Desktop, Home, /mnt/c, or /opt. Set CATALINA_HOME=/path/to/tomcat and retry."; exit 1; }
|
|
35
|
+
export CATALINA_HOME="$TOMCAT_HOME"
|
|
36
|
+
chmod +x "$TOMCAT_HOME"/bin/*.sh 2>/dev/null || true
|
|
37
|
+
echo "Tomcat : $TOMCAT_HOME"
|
|
38
|
+
echo "App : $APP_NAME ($APP_DIR)"
|
|
39
|
+
|
|
40
|
+
# ---- stop Tomcat if it's already running (ignore errors)
|
|
41
|
+
"$TOMCAT_HOME/bin/shutdown.sh" >/dev/null 2>&1 || true
|
|
42
|
+
sleep 2
|
|
43
|
+
|
|
44
|
+
# ---- copy the app into webapps (fresh copy, remove old exploded copy)
|
|
45
|
+
DEST="$TOMCAT_HOME/webapps/$APP_NAME"
|
|
46
|
+
rm -rf "$DEST"
|
|
47
|
+
mkdir -p "$DEST"
|
|
48
|
+
cp -r "$APP_DIR"/. "$DEST"/
|
|
49
|
+
|
|
50
|
+
# ---- compile servlets (if any .java files exist)
|
|
51
|
+
SRC_DIR="$DEST/WEB-INF/src"
|
|
52
|
+
[ -d "$SRC_DIR" ] || SRC_DIR="$DEST/WEB-INF"
|
|
53
|
+
mapfile -t JAVA_FILES < <(find "$SRC_DIR" -name '*.java' 2>/dev/null || true)
|
|
54
|
+
if [ "${#JAVA_FILES[@]}" -gt 0 ]; then
|
|
55
|
+
mkdir -p "$DEST/WEB-INF/classes"
|
|
56
|
+
if command -v cygpath >/dev/null 2>&1; then
|
|
57
|
+
CP_PARTS=()
|
|
58
|
+
for j in "$TOMCAT_HOME"/lib/*.jar; do
|
|
59
|
+
[ -f "$j" ] && CP_PARTS+=("$(cygpath -w "$j")")
|
|
60
|
+
done
|
|
61
|
+
if [ -d "$DEST/WEB-INF/lib" ]; then
|
|
62
|
+
for j in "$DEST"/WEB-INF/lib/*.jar; do
|
|
63
|
+
[ -f "$j" ] && CP_PARTS+=("$(cygpath -w "$j")")
|
|
64
|
+
done
|
|
65
|
+
fi
|
|
66
|
+
CP="$(IFS=";"; echo "${CP_PARTS[*]}")"
|
|
67
|
+
else
|
|
68
|
+
CP="$TOMCAT_HOME/lib/*"
|
|
69
|
+
[ -d "$DEST/WEB-INF/lib" ] && CP="$CP:$DEST/WEB-INF/lib/*"
|
|
70
|
+
fi
|
|
71
|
+
echo "Compiling ${#JAVA_FILES[@]} Java file(s)..."
|
|
72
|
+
javac -cp "$CP" -d "$DEST/WEB-INF/classes" "${JAVA_FILES[@]}"
|
|
73
|
+
else
|
|
74
|
+
echo "No .java files found, skipping compile."
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# ---- start Tomcat
|
|
78
|
+
if [ "$DAEMON_MODE" = true ]; then
|
|
79
|
+
"$TOMCAT_HOME/bin/startup.sh"
|
|
80
|
+
echo
|
|
81
|
+
echo "Started in background. Open: http://localhost:8080/$APP_NAME/"
|
|
82
|
+
echo "Logs : tail -f $TOMCAT_HOME/logs/catalina.out"
|
|
83
|
+
else
|
|
84
|
+
echo
|
|
85
|
+
echo "Started. Open: http://localhost:8080/$APP_NAME/"
|
|
86
|
+
echo "Press Ctrl+C to stop."
|
|
87
|
+
echo
|
|
88
|
+
exec "$TOMCAT_HOME/bin/catalina.sh" run
|
|
89
|
+
fi
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Deploy a servlet/web app folder to Tomcat 9, compile servlets, and start Tomcat.
|
|
3
|
+
# Usage:
|
|
4
|
+
# ./script.sh (runs in foreground, displays logs, press Ctrl+C to stop)
|
|
5
|
+
# ./script.sh -d (runs in background daemon mode)
|
|
6
|
+
# ./script.sh [app-dir] [-d]
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
DAEMON_MODE=false
|
|
10
|
+
APP_ARG=""
|
|
11
|
+
for arg in "$@"; do
|
|
12
|
+
if [ "$arg" = "-d" ] || [ "$arg" = "--daemon" ]; then
|
|
13
|
+
DAEMON_MODE=true
|
|
14
|
+
elif [ -z "$APP_ARG" ]; then
|
|
15
|
+
APP_ARG="$arg"
|
|
16
|
+
fi
|
|
17
|
+
done
|
|
18
|
+
|
|
19
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
|
+
APP_DIR="$(cd "${APP_ARG:-$SCRIPT_DIR}" && pwd)"
|
|
21
|
+
APP_NAME="$(basename "$APP_DIR")"
|
|
22
|
+
|
|
23
|
+
# ---- locate Tomcat 9 (CATALINA_HOME, Desktop, Home, WSL /mnt/c, Git Bash /c, or /opt)
|
|
24
|
+
TOMCAT_HOME="${CATALINA_HOME:-}"
|
|
25
|
+
if [ -z "$TOMCAT_HOME" ]; then
|
|
26
|
+
for d in "$HOME"/Desktop/apache-tomcat-9* "$HOME"/Desktop/*tomcat*9* "$HOME"/Desktop/*omcat* "$HOME"/apache-tomcat-9* "$HOME"/*tomcat* /mnt/c/apache-tomcat-9* /mnt/c/apache-tomcat* /c/apache-tomcat-9* /c/apache-tomcat* /opt/apache-tomcat-9* /opt/apache-tomcat* /usr/local/apache-tomcat* "$APP_DIR"/../*tomcat*; do
|
|
27
|
+
if [ -x "$d/bin/catalina.sh" ] || [ -f "$d/bin/catalina.sh" ]; then
|
|
28
|
+
TOMCAT_HOME="$d"
|
|
29
|
+
break
|
|
30
|
+
fi
|
|
31
|
+
done
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
[ -n "$TOMCAT_HOME" ] || { echo "Tomcat not found in Desktop, Home, /mnt/c, or /opt. Set CATALINA_HOME=/path/to/tomcat and retry."; exit 1; }
|
|
35
|
+
export CATALINA_HOME="$TOMCAT_HOME"
|
|
36
|
+
chmod +x "$TOMCAT_HOME"/bin/*.sh 2>/dev/null || true
|
|
37
|
+
echo "Tomcat : $TOMCAT_HOME"
|
|
38
|
+
echo "App : $APP_NAME ($APP_DIR)"
|
|
39
|
+
|
|
40
|
+
# ---- stop Tomcat if it's already running (ignore errors)
|
|
41
|
+
"$TOMCAT_HOME/bin/shutdown.sh" >/dev/null 2>&1 || true
|
|
42
|
+
sleep 2
|
|
43
|
+
|
|
44
|
+
# ---- copy the app into webapps (fresh copy, remove old exploded copy)
|
|
45
|
+
DEST="$TOMCAT_HOME/webapps/$APP_NAME"
|
|
46
|
+
rm -rf "$DEST"
|
|
47
|
+
mkdir -p "$DEST"
|
|
48
|
+
cp -r "$APP_DIR"/. "$DEST"/
|
|
49
|
+
|
|
50
|
+
# ---- compile servlets (if any .java files exist)
|
|
51
|
+
SRC_DIR="$DEST/WEB-INF/src"
|
|
52
|
+
[ -d "$SRC_DIR" ] || SRC_DIR="$DEST/WEB-INF"
|
|
53
|
+
mapfile -t JAVA_FILES < <(find "$SRC_DIR" -name '*.java' 2>/dev/null || true)
|
|
54
|
+
if [ "${#JAVA_FILES[@]}" -gt 0 ]; then
|
|
55
|
+
mkdir -p "$DEST/WEB-INF/classes"
|
|
56
|
+
if command -v cygpath >/dev/null 2>&1; then
|
|
57
|
+
CP_PARTS=()
|
|
58
|
+
for j in "$TOMCAT_HOME"/lib/*.jar; do
|
|
59
|
+
[ -f "$j" ] && CP_PARTS+=("$(cygpath -w "$j")")
|
|
60
|
+
done
|
|
61
|
+
if [ -d "$DEST/WEB-INF/lib" ]; then
|
|
62
|
+
for j in "$DEST"/WEB-INF/lib/*.jar; do
|
|
63
|
+
[ -f "$j" ] && CP_PARTS+=("$(cygpath -w "$j")")
|
|
64
|
+
done
|
|
65
|
+
fi
|
|
66
|
+
CP="$(IFS=";"; echo "${CP_PARTS[*]}")"
|
|
67
|
+
else
|
|
68
|
+
CP="$TOMCAT_HOME/lib/*"
|
|
69
|
+
[ -d "$DEST/WEB-INF/lib" ] && CP="$CP:$DEST/WEB-INF/lib/*"
|
|
70
|
+
fi
|
|
71
|
+
echo "Compiling ${#JAVA_FILES[@]} Java file(s)..."
|
|
72
|
+
javac -cp "$CP" -d "$DEST/WEB-INF/classes" "${JAVA_FILES[@]}"
|
|
73
|
+
else
|
|
74
|
+
echo "No .java files found, skipping compile."
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# ---- start Tomcat
|
|
78
|
+
if [ "$DAEMON_MODE" = true ]; then
|
|
79
|
+
"$TOMCAT_HOME/bin/startup.sh"
|
|
80
|
+
echo
|
|
81
|
+
echo "Started in background. Open: http://localhost:8080/$APP_NAME/"
|
|
82
|
+
echo "Logs : tail -f $TOMCAT_HOME/logs/catalina.out"
|
|
83
|
+
else
|
|
84
|
+
echo
|
|
85
|
+
echo "Started. Open: http://localhost:8080/$APP_NAME/"
|
|
86
|
+
echo "Press Ctrl+C to stop."
|
|
87
|
+
echo
|
|
88
|
+
exec "$TOMCAT_HOME/bin/catalina.sh" run
|
|
89
|
+
fi
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Deploy a servlet/web app folder to Tomcat 9, compile servlets, and start Tomcat.
|
|
3
|
+
# Usage:
|
|
4
|
+
# ./script.sh (runs in foreground, displays logs, press Ctrl+C to stop)
|
|
5
|
+
# ./script.sh -d (runs in background daemon mode)
|
|
6
|
+
# ./script.sh [app-dir] [-d]
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
DAEMON_MODE=false
|
|
10
|
+
APP_ARG=""
|
|
11
|
+
for arg in "$@"; do
|
|
12
|
+
if [ "$arg" = "-d" ] || [ "$arg" = "--daemon" ]; then
|
|
13
|
+
DAEMON_MODE=true
|
|
14
|
+
elif [ -z "$APP_ARG" ]; then
|
|
15
|
+
APP_ARG="$arg"
|
|
16
|
+
fi
|
|
17
|
+
done
|
|
18
|
+
|
|
19
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
|
+
APP_DIR="$(cd "${APP_ARG:-$SCRIPT_DIR}" && pwd)"
|
|
21
|
+
APP_NAME="$(basename "$APP_DIR")"
|
|
22
|
+
|
|
23
|
+
# ---- locate Tomcat 9 (CATALINA_HOME, Desktop, Home, WSL /mnt/c, Git Bash /c, or /opt)
|
|
24
|
+
TOMCAT_HOME="${CATALINA_HOME:-}"
|
|
25
|
+
if [ -z "$TOMCAT_HOME" ]; then
|
|
26
|
+
for d in "$HOME"/Desktop/apache-tomcat-9* "$HOME"/Desktop/*tomcat*9* "$HOME"/Desktop/*omcat* "$HOME"/apache-tomcat-9* "$HOME"/*tomcat* /mnt/c/apache-tomcat-9* /mnt/c/apache-tomcat* /c/apache-tomcat-9* /c/apache-tomcat* /opt/apache-tomcat-9* /opt/apache-tomcat* /usr/local/apache-tomcat* "$APP_DIR"/../*tomcat*; do
|
|
27
|
+
if [ -x "$d/bin/catalina.sh" ] || [ -f "$d/bin/catalina.sh" ]; then
|
|
28
|
+
TOMCAT_HOME="$d"
|
|
29
|
+
break
|
|
30
|
+
fi
|
|
31
|
+
done
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
[ -n "$TOMCAT_HOME" ] || { echo "Tomcat not found in Desktop, Home, /mnt/c, or /opt. Set CATALINA_HOME=/path/to/tomcat and retry."; exit 1; }
|
|
35
|
+
export CATALINA_HOME="$TOMCAT_HOME"
|
|
36
|
+
chmod +x "$TOMCAT_HOME"/bin/*.sh 2>/dev/null || true
|
|
37
|
+
echo "Tomcat : $TOMCAT_HOME"
|
|
38
|
+
echo "App : $APP_NAME ($APP_DIR)"
|
|
39
|
+
|
|
40
|
+
# ---- stop Tomcat if it's already running (ignore errors)
|
|
41
|
+
"$TOMCAT_HOME/bin/shutdown.sh" >/dev/null 2>&1 || true
|
|
42
|
+
sleep 2
|
|
43
|
+
|
|
44
|
+
# ---- copy the app into webapps (fresh copy, remove old exploded copy)
|
|
45
|
+
DEST="$TOMCAT_HOME/webapps/$APP_NAME"
|
|
46
|
+
rm -rf "$DEST"
|
|
47
|
+
mkdir -p "$DEST"
|
|
48
|
+
cp -r "$APP_DIR"/. "$DEST"/
|
|
49
|
+
|
|
50
|
+
# ---- compile servlets (if any .java files exist)
|
|
51
|
+
SRC_DIR="$DEST/WEB-INF/src"
|
|
52
|
+
[ -d "$SRC_DIR" ] || SRC_DIR="$DEST/WEB-INF"
|
|
53
|
+
mapfile -t JAVA_FILES < <(find "$SRC_DIR" -name '*.java' 2>/dev/null || true)
|
|
54
|
+
if [ "${#JAVA_FILES[@]}" -gt 0 ]; then
|
|
55
|
+
mkdir -p "$DEST/WEB-INF/classes"
|
|
56
|
+
if command -v cygpath >/dev/null 2>&1; then
|
|
57
|
+
CP_PARTS=()
|
|
58
|
+
for j in "$TOMCAT_HOME"/lib/*.jar; do
|
|
59
|
+
[ -f "$j" ] && CP_PARTS+=("$(cygpath -w "$j")")
|
|
60
|
+
done
|
|
61
|
+
if [ -d "$DEST/WEB-INF/lib" ]; then
|
|
62
|
+
for j in "$DEST"/WEB-INF/lib/*.jar; do
|
|
63
|
+
[ -f "$j" ] && CP_PARTS+=("$(cygpath -w "$j")")
|
|
64
|
+
done
|
|
65
|
+
fi
|
|
66
|
+
CP="$(IFS=";"; echo "${CP_PARTS[*]}")"
|
|
67
|
+
else
|
|
68
|
+
CP="$TOMCAT_HOME/lib/*"
|
|
69
|
+
[ -d "$DEST/WEB-INF/lib" ] && CP="$CP:$DEST/WEB-INF/lib/*"
|
|
70
|
+
fi
|
|
71
|
+
echo "Compiling ${#JAVA_FILES[@]} Java file(s)..."
|
|
72
|
+
javac -cp "$CP" -d "$DEST/WEB-INF/classes" "${JAVA_FILES[@]}"
|
|
73
|
+
else
|
|
74
|
+
echo "No .java files found, skipping compile."
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# ---- start Tomcat
|
|
78
|
+
if [ "$DAEMON_MODE" = true ]; then
|
|
79
|
+
"$TOMCAT_HOME/bin/startup.sh"
|
|
80
|
+
echo
|
|
81
|
+
echo "Started in background. Open: http://localhost:8080/$APP_NAME/"
|
|
82
|
+
echo "Logs : tail -f $TOMCAT_HOME/logs/catalina.out"
|
|
83
|
+
else
|
|
84
|
+
echo
|
|
85
|
+
echo "Started. Open: http://localhost:8080/$APP_NAME/"
|
|
86
|
+
echo "Press Ctrl+C to stop."
|
|
87
|
+
echo
|
|
88
|
+
exec "$TOMCAT_HOME/bin/catalina.sh" run
|
|
89
|
+
fi
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Deploy a servlet/web app folder to Tomcat 9, compile servlets, and start Tomcat.
|
|
3
|
+
# Usage:
|
|
4
|
+
# ./script.sh (runs in foreground, displays logs, press Ctrl+C to stop)
|
|
5
|
+
# ./script.sh -d (runs in background daemon mode)
|
|
6
|
+
# ./script.sh [app-dir] [-d]
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
DAEMON_MODE=false
|
|
10
|
+
APP_ARG=""
|
|
11
|
+
for arg in "$@"; do
|
|
12
|
+
if [ "$arg" = "-d" ] || [ "$arg" = "--daemon" ]; then
|
|
13
|
+
DAEMON_MODE=true
|
|
14
|
+
elif [ -z "$APP_ARG" ]; then
|
|
15
|
+
APP_ARG="$arg"
|
|
16
|
+
fi
|
|
17
|
+
done
|
|
18
|
+
|
|
19
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
|
+
APP_DIR="$(cd "${APP_ARG:-$SCRIPT_DIR}" && pwd)"
|
|
21
|
+
APP_NAME="$(basename "$APP_DIR")"
|
|
22
|
+
|
|
23
|
+
# ---- locate Tomcat 9 (CATALINA_HOME, Desktop, Home, WSL /mnt/c, Git Bash /c, or /opt)
|
|
24
|
+
TOMCAT_HOME="${CATALINA_HOME:-}"
|
|
25
|
+
if [ -z "$TOMCAT_HOME" ]; then
|
|
26
|
+
for d in "$HOME"/Desktop/apache-tomcat-9* "$HOME"/Desktop/*tomcat*9* "$HOME"/Desktop/*omcat* "$HOME"/apache-tomcat-9* "$HOME"/*tomcat* /mnt/c/apache-tomcat-9* /mnt/c/apache-tomcat* /c/apache-tomcat-9* /c/apache-tomcat* /opt/apache-tomcat-9* /opt/apache-tomcat* /usr/local/apache-tomcat* "$APP_DIR"/../*tomcat*; do
|
|
27
|
+
if [ -x "$d/bin/catalina.sh" ] || [ -f "$d/bin/catalina.sh" ]; then
|
|
28
|
+
TOMCAT_HOME="$d"
|
|
29
|
+
break
|
|
30
|
+
fi
|
|
31
|
+
done
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
[ -n "$TOMCAT_HOME" ] || { echo "Tomcat not found in Desktop, Home, /mnt/c, or /opt. Set CATALINA_HOME=/path/to/tomcat and retry."; exit 1; }
|
|
35
|
+
export CATALINA_HOME="$TOMCAT_HOME"
|
|
36
|
+
chmod +x "$TOMCAT_HOME"/bin/*.sh 2>/dev/null || true
|
|
37
|
+
echo "Tomcat : $TOMCAT_HOME"
|
|
38
|
+
echo "App : $APP_NAME ($APP_DIR)"
|
|
39
|
+
|
|
40
|
+
# ---- stop Tomcat if it's already running (ignore errors)
|
|
41
|
+
"$TOMCAT_HOME/bin/shutdown.sh" >/dev/null 2>&1 || true
|
|
42
|
+
sleep 2
|
|
43
|
+
|
|
44
|
+
# ---- copy the app into webapps (fresh copy, remove old exploded copy)
|
|
45
|
+
DEST="$TOMCAT_HOME/webapps/$APP_NAME"
|
|
46
|
+
rm -rf "$DEST"
|
|
47
|
+
mkdir -p "$DEST"
|
|
48
|
+
cp -r "$APP_DIR"/. "$DEST"/
|
|
49
|
+
|
|
50
|
+
# ---- compile servlets (if any .java files exist)
|
|
51
|
+
SRC_DIR="$DEST/WEB-INF/src"
|
|
52
|
+
[ -d "$SRC_DIR" ] || SRC_DIR="$DEST/WEB-INF"
|
|
53
|
+
mapfile -t JAVA_FILES < <(find "$SRC_DIR" -name '*.java' 2>/dev/null || true)
|
|
54
|
+
if [ "${#JAVA_FILES[@]}" -gt 0 ]; then
|
|
55
|
+
mkdir -p "$DEST/WEB-INF/classes"
|
|
56
|
+
if command -v cygpath >/dev/null 2>&1; then
|
|
57
|
+
CP_PARTS=()
|
|
58
|
+
for j in "$TOMCAT_HOME"/lib/*.jar; do
|
|
59
|
+
[ -f "$j" ] && CP_PARTS+=("$(cygpath -w "$j")")
|
|
60
|
+
done
|
|
61
|
+
if [ -d "$DEST/WEB-INF/lib" ]; then
|
|
62
|
+
for j in "$DEST"/WEB-INF/lib/*.jar; do
|
|
63
|
+
[ -f "$j" ] && CP_PARTS+=("$(cygpath -w "$j")")
|
|
64
|
+
done
|
|
65
|
+
fi
|
|
66
|
+
CP="$(IFS=";"; echo "${CP_PARTS[*]}")"
|
|
67
|
+
else
|
|
68
|
+
CP="$TOMCAT_HOME/lib/*"
|
|
69
|
+
[ -d "$DEST/WEB-INF/lib" ] && CP="$CP:$DEST/WEB-INF/lib/*"
|
|
70
|
+
fi
|
|
71
|
+
echo "Compiling ${#JAVA_FILES[@]} Java file(s)..."
|
|
72
|
+
javac -cp "$CP" -d "$DEST/WEB-INF/classes" "${JAVA_FILES[@]}"
|
|
73
|
+
else
|
|
74
|
+
echo "No .java files found, skipping compile."
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# ---- start Tomcat
|
|
78
|
+
if [ "$DAEMON_MODE" = true ]; then
|
|
79
|
+
"$TOMCAT_HOME/bin/startup.sh"
|
|
80
|
+
echo
|
|
81
|
+
echo "Started in background. Open: http://localhost:8080/$APP_NAME/"
|
|
82
|
+
echo "Logs : tail -f $TOMCAT_HOME/logs/catalina.out"
|
|
83
|
+
else
|
|
84
|
+
echo
|
|
85
|
+
echo "Started. Open: http://localhost:8080/$APP_NAME/"
|
|
86
|
+
echo "Press Ctrl+C to stop."
|
|
87
|
+
echo
|
|
88
|
+
exec "$TOMCAT_HOME/bin/catalina.sh" run
|
|
89
|
+
fi
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Deploy a servlet/web app folder to Tomcat 9, compile servlets, and start Tomcat.
|
|
3
|
+
# Usage:
|
|
4
|
+
# ./script.sh (runs in foreground, displays logs, press Ctrl+C to stop)
|
|
5
|
+
# ./script.sh -d (runs in background daemon mode)
|
|
6
|
+
# ./script.sh [app-dir] [-d]
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
DAEMON_MODE=false
|
|
10
|
+
APP_ARG=""
|
|
11
|
+
for arg in "$@"; do
|
|
12
|
+
if [ "$arg" = "-d" ] || [ "$arg" = "--daemon" ]; then
|
|
13
|
+
DAEMON_MODE=true
|
|
14
|
+
elif [ -z "$APP_ARG" ]; then
|
|
15
|
+
APP_ARG="$arg"
|
|
16
|
+
fi
|
|
17
|
+
done
|
|
18
|
+
|
|
19
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
|
+
APP_DIR="$(cd "${APP_ARG:-$SCRIPT_DIR}" && pwd)"
|
|
21
|
+
APP_NAME="$(basename "$APP_DIR")"
|
|
22
|
+
|
|
23
|
+
# ---- locate Tomcat 9 (CATALINA_HOME, Desktop, Home, WSL /mnt/c, Git Bash /c, or /opt)
|
|
24
|
+
TOMCAT_HOME="${CATALINA_HOME:-}"
|
|
25
|
+
if [ -z "$TOMCAT_HOME" ]; then
|
|
26
|
+
for d in "$HOME"/Desktop/apache-tomcat-9* "$HOME"/Desktop/*tomcat*9* "$HOME"/Desktop/*omcat* "$HOME"/apache-tomcat-9* "$HOME"/*tomcat* /mnt/c/apache-tomcat-9* /mnt/c/apache-tomcat* /c/apache-tomcat-9* /c/apache-tomcat* /opt/apache-tomcat-9* /opt/apache-tomcat* /usr/local/apache-tomcat* "$APP_DIR"/../*tomcat*; do
|
|
27
|
+
if [ -x "$d/bin/catalina.sh" ] || [ -f "$d/bin/catalina.sh" ]; then
|
|
28
|
+
TOMCAT_HOME="$d"
|
|
29
|
+
break
|
|
30
|
+
fi
|
|
31
|
+
done
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
[ -n "$TOMCAT_HOME" ] || { echo "Tomcat not found in Desktop, Home, /mnt/c, or /opt. Set CATALINA_HOME=/path/to/tomcat and retry."; exit 1; }
|
|
35
|
+
export CATALINA_HOME="$TOMCAT_HOME"
|
|
36
|
+
chmod +x "$TOMCAT_HOME"/bin/*.sh 2>/dev/null || true
|
|
37
|
+
echo "Tomcat : $TOMCAT_HOME"
|
|
38
|
+
echo "App : $APP_NAME ($APP_DIR)"
|
|
39
|
+
|
|
40
|
+
# ---- stop Tomcat if it's already running (ignore errors)
|
|
41
|
+
"$TOMCAT_HOME/bin/shutdown.sh" >/dev/null 2>&1 || true
|
|
42
|
+
sleep 2
|
|
43
|
+
|
|
44
|
+
# ---- copy the app into webapps (fresh copy, remove old exploded copy)
|
|
45
|
+
DEST="$TOMCAT_HOME/webapps/$APP_NAME"
|
|
46
|
+
rm -rf "$DEST"
|
|
47
|
+
mkdir -p "$DEST"
|
|
48
|
+
cp -r "$APP_DIR"/. "$DEST"/
|
|
49
|
+
|
|
50
|
+
# ---- compile servlets (if any .java files exist)
|
|
51
|
+
SRC_DIR="$DEST/WEB-INF/src"
|
|
52
|
+
[ -d "$SRC_DIR" ] || SRC_DIR="$DEST/WEB-INF"
|
|
53
|
+
mapfile -t JAVA_FILES < <(find "$SRC_DIR" -name '*.java' 2>/dev/null || true)
|
|
54
|
+
if [ "${#JAVA_FILES[@]}" -gt 0 ]; then
|
|
55
|
+
mkdir -p "$DEST/WEB-INF/classes"
|
|
56
|
+
if command -v cygpath >/dev/null 2>&1; then
|
|
57
|
+
CP_PARTS=()
|
|
58
|
+
for j in "$TOMCAT_HOME"/lib/*.jar; do
|
|
59
|
+
[ -f "$j" ] && CP_PARTS+=("$(cygpath -w "$j")")
|
|
60
|
+
done
|
|
61
|
+
if [ -d "$DEST/WEB-INF/lib" ]; then
|
|
62
|
+
for j in "$DEST"/WEB-INF/lib/*.jar; do
|
|
63
|
+
[ -f "$j" ] && CP_PARTS+=("$(cygpath -w "$j")")
|
|
64
|
+
done
|
|
65
|
+
fi
|
|
66
|
+
CP="$(IFS=";"; echo "${CP_PARTS[*]}")"
|
|
67
|
+
else
|
|
68
|
+
CP="$TOMCAT_HOME/lib/*"
|
|
69
|
+
[ -d "$DEST/WEB-INF/lib" ] && CP="$CP:$DEST/WEB-INF/lib/*"
|
|
70
|
+
fi
|
|
71
|
+
echo "Compiling ${#JAVA_FILES[@]} Java file(s)..."
|
|
72
|
+
javac -cp "$CP" -d "$DEST/WEB-INF/classes" "${JAVA_FILES[@]}"
|
|
73
|
+
else
|
|
74
|
+
echo "No .java files found, skipping compile."
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# ---- start Tomcat
|
|
78
|
+
if [ "$DAEMON_MODE" = true ]; then
|
|
79
|
+
"$TOMCAT_HOME/bin/startup.sh"
|
|
80
|
+
echo
|
|
81
|
+
echo "Started in background. Open: http://localhost:8080/$APP_NAME/"
|
|
82
|
+
echo "Logs : tail -f $TOMCAT_HOME/logs/catalina.out"
|
|
83
|
+
else
|
|
84
|
+
echo
|
|
85
|
+
echo "Started. Open: http://localhost:8080/$APP_NAME/"
|
|
86
|
+
echo "Press Ctrl+C to stop."
|
|
87
|
+
echo
|
|
88
|
+
exec "$TOMCAT_HOME/bin/catalina.sh" run
|
|
89
|
+
fi
|