Nach dem Gespräch über auf GitLab's issue tracker konnte ich das Maven lokalen Repository-Pfad und es ändern in ./.m2/repository/
Verzeichnis setzen, das ist, werden wir dann besteht zwischen den Läufen von diesem globalen Block zu dem CI-Config und fügen hinzu:
cache:
paths:
- ./.m2/repository
# keep cache across branch
key: "$CI_BUILD_REF_NAME"
Leider nach this StackOverflow answer der maven-Pfad lokalen Repository kann nur auf jedem Laufe gesetzt wird mit -Dmaven.repo.local
oder durch Bearbeiten Ihrer settings.xml
, die eine mühsame Aufgabe in einem gitlab-ci Konfigurationsskript ist. Eine Option wäre, eine Variable mit den Standard-Maven-Optionen zu setzen und sie an jeden Lauf zu übergeben.
Auch ist es wichtig, dass das lokale Maven-Repository ein Kind des aktuellen Verzeichnisses ist. Aus irgendeinem Grund funktionierte es nicht für mich, es in /cache
oder /builds
zu setzen, obwohl jemand von GitLab behauptete, dass es sollte.
Beispiel einer Arbeits gitlab-ci.yml
Konfigurationsdatei für Maven + Java:
image: maven:3-jdk-8
variables:
MAVEN_OPTS: "-Djava.awt.headless=true -Dmaven.repo.local=./.m2/repository"
MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version"
cache:
paths:
- ./.m2/repository
# keep cache across branch
key: "$CI_BUILD_REF_NAME"
stages:
- build
- test
- deploy
build-job:
stage: build
script:
- "mvn clean compile $MAVEN_CLI_OPTS"
artifacts:
paths:
- target/
unittest-job:
stage: test
dependencies:
- build-job
script:
- "mvn package $MAVEN_CLI_OPTS"
artifacts:
paths:
- target/
integrationtest-job:
stage: test
dependencies:
- build-job
script:
- "mvn verify $MAVEN_CLI_OPTS"
artifacts:
paths:
- target/
deploy-job:
stage: deploy
artifacts:
paths:
- "target/*.jar"
Maven einen Cache hat in der Regel unter '$ HOME/.m2/repository "oder kann über' mvn -Dmaven.local.repo = Path' konfiguriert werden? – khmarbaise