2016-11-10 1 views
2

Я пытаюсь создать проект java на сервере GitLab с использованием Maven в Docker. Поскольку я использую сторонние банки, я устанавливаю их локально, используя плагин install-file. Это/кажется успешным, как на моей локальной машине, так как на Докер:Файл установки Maven, не действующий в GitLab/Docker: «не удалось разрешить зависимости для проекта»

$ mvn install:install-file -Dfile=lib/customArtifact-1.0.jar -DgroupId=customArtifact -DartifactId=customArtifact -Dversion=1.0 -Dpackaging=jar 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building myProject 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ myProject --- 
[INFO] Installing /builds/gitlab/myProject-groep/myProject/lib/customArtifact-1.0.jar to /root/.m2/repository/customArtifact/customArtifact/1.0/customArtifact-1.0.jar 
[INFO] Installing /tmp/mvninstall2011198835315637645.pom to /root/.m2/repository/customArtifact/customArtifact/1.0/customArtifact-1.0.pom 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.191 s 
[INFO] Finished at: 2016-11-10T07:35:47+00:00 
[INFO] Final Memory: 8M/144M 
[INFO] ------------------------------------------------------------------------ 

Но на Докер я получаю эту ошибку, которая отсутствует на моей локальной машине:

$ mvn --batch-mode --quiet clean install -DskipTests 
[ERROR] Failed to execute goal on project myProject: Could not resolve 
dependencies for project groupId:myProject:jar:1.0-SNAPSHOT: Failed to 
collect dependencies at customArtifact:customArtifact:jar:1.0: Failed 
to read artifact descriptor for customArtifact:customArtifact:jar:1.0: 
    Could not transfer artifact customArtifact:customArtifact:pom:1.0 
     from/to myProject_dependencies (/builds/gitlab/myProject-groep/ 
     myProject/lib): Cannot access /builds/gitlab/myProject-groep/ 
     myProject/lib with type default using the available connector 
     factories: BasicRepositoryConnectorFactory: Cannot access 
     /builds/gitlab/myProject-groep/myProject/lib using the registered 
     transporter factories: WagonTransporterFactory: Unsupported 
     transport protocol -> [Help 1] 

Я действительно дон Не понимаю, что здесь не так. Я что-то пропустил на своем пути, переменная окружения? Это должно быть нечто второстепенное, поскольку я буквально делаю то же самое локально.

Помощь очень ценится!

EDIT:

Я использую этот докер maven:3-jdk-7,

FROM openjdk:7-jdk 

    ARG MAVEN_VERSION=3.3.9 
    ARG USER_HOME_DIR="/root" 

    RUN mkdir -p /usr/share/maven /usr/share/maven/ref \ 
    && curl -fsSL http://apache.osuosl.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz \ 
     | tar -xzC /usr/share/maven --strip-components=1 \ 
    && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn 

    ENV MAVEN_HOME /usr/share/maven 
    ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2" 

    COPY mvn-entrypoint.sh /usr/local/bin/mvn-entrypoint.sh 
    COPY settings-docker.xml /usr/share/maven/ref/ 

    VOLUME "$USER_HOME_DIR/.m2" 

    ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"] 
    CMD ["mvn"]which is found here 

настройки-docker.xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
      https://maven.apache.org/xsd/settings-1.0.0.xsd"> 
    <localRepository>/usr/share/maven/ref/repository</localRepository> 
</settings> 
+0

Какова ваша версия Maven? – Tunaki

+0

Версия: Apache Maven 3.3.9 –

+0

Вы можете поделиться maven 'settings.xml' и' Dockerfile', пожалуйста? Кажется, что вы пытаетесь прочитать зависимость от неправильного пути или том не подвергается докеру –

ответ

1

, локальной

Inst все библиотеки thrid-party, использующие mvn install:install-file, установят их по умолчанию в /.m2/repository. Затем mvn clean install выберет их из репозитория по умолчанию i.e /.m2/repository.

В Docker контейнере

Установка thrid сторонних библиотек с использованием mvn install:install-file установит их в /usr/share/maven/ref/repository (внутри контейнера), как определено в настройках-docker.xml. Затем mvn clean install выберет их с /usr/share/maven/ref/repository.

Проблема в том, что maven ищет зависимости в /builds/gitlab/myProject-groep/myProject/lib, как определено в файле pom, но этот каталог не открыт для контейнера докеров.

<repositories> 
    <repository> 
     <id>myProject_dependencies</id> 
     <url>${basedir}/lib/</url> 
    </repository> 
</repositories> 

Удаление раздела репозиториев из файла pom должно решить проблему.

+0

Спасибо, это решает проблему. –

Смежные вопросы