Maven 安装文件在 GitLab/Docker 中无效:"could not resolve dependencies for project"

Maven install-file not effective in GitLab/Docker: "could not resolve dependencies for project"

我正在尝试在 Docker 中使用 Maven 在 GitLab 服务器上构建我的 java 项目。因为我使用 3rd 方 jar,所以我使用安装文件插件在本地安装它们。这个 is/seems 在我的本地机器上都成功了,就像在 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] ------------------------------------------------------------------------

但是在 Docker 上我得到这个错误,我的本地机器上没有这个错误:

$ 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]

我真的不明白这里有什么问题。我在我的道路上遗漏了什么,环境变量?它应该是次要的,因为我确实在本地做同样的事情。

非常感谢您的帮助!

编辑:

我正在使用这个 Docker 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>

本地

使用 mvn install:install-file 安装第三方库将默认将它们安装在 /.m2/repository 中。然后 mvn clean install 将从默认存储库中选择它们,即 /.m2/repository.

在docker容器中

使用 mvn install:install-file 安装第三方库会将它们安装在 /usr/share/maven/ref/repository(容器内),如设置-docker.xml 中所定义。然后 mvn clean install 将从 /usr/share/maven/ref/repository.

中挑选它们

问题是 maven 正在寻找 pom 文件中定义的 /builds/gitlab/myProject-groep/myProject/lib 中的依赖项,但此目录未暴露给 docker 容器。

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

从 pom 文件中删除存储库部分应该可以解决问题。