### build all dependencies for offline use
FROM maven:3.9.13-eclipse-temurin-17 as dependencies
USER root
RUN mkdir /app
WORKDIR /app

COPY . /app
RUN mvn dependency:go-offline -B --settings .custom-mvn-settings.xml

### Build artifact and run tests
FROM maven:3.9.13-eclipse-temurin-17 as builder

ARG AWS_ACCESS_KEY
ARG AWS_SECRET_KEY
ARG AWS_SESSION_TOKEN

USER root
RUN mkdir /app
WORKDIR /app

COPY --from=dependencies /root/.m2 /root/.m2
COPY . /app

RUN mvn --settings .custom-mvn-settings.xml -DskipTests package

FROM builder as tests
RUN mvn --settings .custom-mvn-settings.xml package

FROM builder as static-analysis
RUN mvn checkstyle:checkstyle pmd:pmd pmd:cpd --settings .custom-mvn-settings.xml

FROM scratch AS test-results
COPY --from=tests /app/target/surefire-reports surefire-reports

FROM test-results as static-analysis-report
COPY --from=static-analysis  /app/target/checkstyle-result.xml .
COPY --from=static-analysis  /app/target/pmd.xml .
COPY --from=static-analysis  /app/target/cpd.xml .

####

FROM tomcat:9.0.117-jre17-temurin as deploy

ARG APP
ARG SERVICE_PORT=8080
ARG REVISION

RUN apt-get update && apt-get upgrade -y && rm -rf /var/lib/apt/lists/*
RUN rm -rf /usr/local/tomcat/webapps/*
COPY --from=builder /app/target/*.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh","run"]
EXPOSE ${SERVICE_PORT}
