- Add start_app.sh script for one-click application startup - Add STARTUP_GUIDE.md with detailed startup instructions - Add init_and_start.sh alternative startup script - Fix JpaAuditingConfig to remove duplicate @EnableJpaRepositories - Update application-dev.yml to use environment variables for database config - Fix TenantContextFilterTest to use proper MockFilterChain implementation - Fix OrderAuditIntegrationTest to use correct TenantScope constructor - Fix OrderCacheIntegrationTest to use correct method names and return types - Add tmpl-admin frontend project - Update OrderControllerTest with correct method mappings and return codes Co-authored-by: Qwen-Coder <[email protected]>
153 lines
5.1 KiB
Bash
Executable File
153 lines
5.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Java Service Template - Quick Start Script
|
|
# Initializes database 'java_template', establishes Flyway baseline, and starts the application
|
|
|
|
set -e # Exit immediately if a command exits with a non-zero status
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo_color() {
|
|
local color=$1
|
|
local message=$2
|
|
echo -e "${color}${message}${NC}"
|
|
}
|
|
|
|
# Check if another instance is already running
|
|
if pgrep -f "java.*tmpl-api.*SNAPSHOT.jar" > /dev/null; then
|
|
echo_color $RED "Another instance of the application is already running!"
|
|
echo_color $YELLOW "Please stop the existing process before starting a new one."
|
|
exit 1
|
|
fi
|
|
|
|
# Configuration - Use environment variables with defaults
|
|
PORT="${PORT:-48080}"
|
|
DB_NAME="${DB_NAME:-java_template}"
|
|
DB_USER="${DB_USER:-postgres}"
|
|
DB_PASS="${DB_PASS:-postgres}"
|
|
DB_HOST="${DB_HOST:-localhost}"
|
|
DB_PORT="${DB_PORT:-5432}"
|
|
|
|
APP_JAR="tmpl-api/target/tmpl-api-0.1.0-SNAPSHOT.jar"
|
|
|
|
echo_color $YELLOW "Starting Java Service Template setup..."
|
|
echo_color $YELLOW "Using port: $PORT"
|
|
|
|
# Function to check if PostgreSQL is running
|
|
check_postgres() {
|
|
echo_color $YELLOW "Checking PostgreSQL connectivity..."
|
|
|
|
if ! command -v psql &> /dev/null; then
|
|
echo_color $RED "psql command not found. Please install PostgreSQL client."
|
|
exit 1
|
|
fi
|
|
|
|
if ! pg_isready -h "$DB_HOST" -p "$DB_PORT" 2>/dev/null; then
|
|
echo_color $RED "PostgreSQL server is not running at $DB_HOST:$DB_PORT"
|
|
echo_color $YELLOW "Please start PostgreSQL server before running this script."
|
|
exit 1
|
|
fi
|
|
|
|
echo_color $GREEN "✓ PostgreSQL is accessible"
|
|
}
|
|
|
|
# Function to create database
|
|
create_database() {
|
|
echo_color $YELLOW "Creating database: $DB_NAME"
|
|
|
|
# Check if database already exists
|
|
if PGPASSWORD="$DB_PASS" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -lqt | cut -d \| -f 1 | grep -qw "$DB_NAME"; then
|
|
echo_color $GREEN "✓ Database $DB_NAME already exists"
|
|
return 0
|
|
fi
|
|
|
|
# Create database
|
|
PGPASSWORD="$DB_PASS" createdb -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -O "$DB_USER" "$DB_NAME"
|
|
echo_color $GREEN "✓ Database $DB_NAME created successfully"
|
|
}
|
|
|
|
# Function to build the application
|
|
build_application() {
|
|
echo_color $YELLOW "Building the application..."
|
|
|
|
if [ ! -f "pom.xml" ]; then
|
|
echo_color $RED "✗ Pom.xml not found in current directory!"
|
|
exit 1
|
|
fi
|
|
|
|
mvn clean package -DskipTests
|
|
|
|
if [ ! -f "$APP_JAR" ]; then
|
|
echo_color $RED "✗ Application JAR not found at $APP_JAR after build!"
|
|
exit 1
|
|
fi
|
|
|
|
echo_color $GREEN "✓ Application built successfully"
|
|
}
|
|
|
|
# Function to establish Flyway baseline and run migrations
|
|
setup_flyway() {
|
|
echo_color $YELLOW "Setting up Flyway migrations..."
|
|
|
|
# Run the application once to let Flyway handle the database setup
|
|
# This will create the flyway_schema_history table and apply migrations
|
|
JAVA_OPTS="-Dspring.profiles.active=dev,redis -Dspring.main.allow-bean-definition-overriding=true"
|
|
JAVA_OPTS="$JAVA_OPTS -DDB_HOST=$DB_HOST -DDB_PORT=$DB_PORT -DDB_NAME=$DB_NAME -DDB_USER=$DB_USER -DDB_PASS=$DB_PASS"
|
|
|
|
echo_color $YELLOW "Running application to initialize database with Flyway..."
|
|
|
|
# Run the application briefly to let Flyway do its job
|
|
# Use a random port to avoid conflicts and ensure quick startup/shutdown
|
|
timeout 30s java $JAVA_OPTS -Dserver.port=0 -Dmanagement.server.port=0 -jar $APP_JAR || true
|
|
# The || true ensures the script continues even if timeout kills the process
|
|
|
|
echo_color $GREEN "✓ Flyway setup completed (baseline and migrations applied)"
|
|
}
|
|
|
|
# Function to start the application properly
|
|
start_application() {
|
|
echo_color $YELLOW "Starting the application..."
|
|
|
|
# Set environment variables for the application
|
|
export DB_HOST=$DB_HOST
|
|
export DB_PORT=$DB_PORT
|
|
export DB_NAME=$DB_NAME
|
|
export DB_USER=$DB_USER
|
|
export DB_PASS=$DB_PASS
|
|
|
|
# Start the application with the specified port
|
|
JAVA_OPTS="-Dserver.port=$PORT -Dmanagement.server.port=$PORT"
|
|
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=dev,redis -Dspring.main.allow-bean-definition-overriding=true"
|
|
JAVA_OPTS="$JAVA_OPTS -DDB_HOST=$DB_HOST -DDB_PORT=$DB_PORT -DDB_NAME=$DB_NAME -DDB_USER=$DB_USER -DDB_PASS=$DB_PASS"
|
|
|
|
echo_color $GREEN "✓ Starting application with command: java $JAVA_OPTS -jar $APP_JAR"
|
|
echo_color $GREEN "✓ Application will be available at: http://localhost:$PORT"
|
|
echo_color $GREEN "✓ Health endpoint: http://localhost:$PORT/actuator/health"
|
|
|
|
java $JAVA_OPTS -jar $APP_JAR
|
|
}
|
|
|
|
# Main execution sequence
|
|
main() {
|
|
echo_color $YELLOW "=== Step 1: Checking prerequisites ==="
|
|
check_postgres
|
|
|
|
echo_color $YELLOW "=== Step 2: Building application ==="
|
|
build_application
|
|
|
|
echo_color $YELLOW "=== Step 3: Creating database '$DB_NAME' ==="
|
|
create_database
|
|
|
|
echo_color $YELLOW "=== Step 4: Setting up Flyway (baseline and migrations) ==="
|
|
setup_flyway
|
|
|
|
echo_color $YELLOW "=== Step 5: Starting application ==="
|
|
start_application
|
|
}
|
|
|
|
# Run the main function
|
|
main |