Java CI with Maven (multi-job)
- Java 21
- Maven 3.8 or higher
- Spring Boot 3.x
docker run --name redis-session -p 6379:6379 redis
docker run -d \ --name spring-session-postgres \ -e POSTGRES_DB=session_db \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASSWORD=password \ -p 5432:5432 \ postgres:16
docker run -it --rm \ --network host \ postgres:16 \ psql -h localhost -U postgres -d session_db
CREATE DATABASE session_db WITH OWNER = postgres TEMPLATE = postgres ENCODING = 'UTF-8' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = pg_default CONNECTION LIMIT = -1 IS_TEMPLATE = False;
DROP TABLE IF EXISTS SPRING_SESSION_ATTRIBUTES; DROP TABLE IF EXISTS SPRING_SESSION; CREATE TABLE IF NOT EXISTS SPRING_SESSION ( PRIMARY_ID CHAR(36) NOT NULL, SESSION_ID CHAR(36) NOT NULL, CREATION_TIME BIGINT NOT NULL, LAST_ACCESS_TIME BIGINT NOT NULL, MAX_INACTIVE_INTERVAL INT NOT NULL, EXPIRY_TIME BIGINT NOT NULL, PRINCIPAL_NAME VARCHAR(100), CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID) ); CREATE UNIQUE INDEX IF NOT EXISTS SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID); CREATE INDEX IF NOT EXISTS SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME); CREATE INDEX IF NOT EXISTS SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME); CREATE TABLE IF NOT EXISTS SPRING_SESSION_ATTRIBUTES ( SESSION_PRIMARY_ID CHAR(36) NOT NULL, ATTRIBUTE_NAME VARCHAR(200) NOT NULL, ATTRIBUTE_BYTES BYTEA NOT NULL, CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME), CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION(PRIMARY_ID) ON DELETE CASCADE );
docker logs spring-session-postgres
mvn clean install -Dspring.profiles.active=test
mvn compile
mvn clean install
mvn test
mvn -Dtest=TestClassName test
mvn -Dtest=TestClassName1,TestClassName2,TestClassName3#testMethodName test
mvn -Dtest=TestClassName#testMethodName test
mvn -DskipCompile=true -Dtest=TestClassName#testMethodName test
or
mvn -Dtest=TestClassName#testMethodName surefire:test
mvn package
mvn spring-boot:run