Maven/Docker:缓存所有依赖项

Maven/Docker:缓存所有依赖项,maven,docker,spring-boot,Maven,Docker,Spring Boot,我正在尝试在docker容器中构建/部署spring引导 FROM maven:3.5.3-jdk-8-slim AS build COPY ./pom.xml /app/pom.xml RUN cd /app RUN mvn -f /app/pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency:go-offline dependency:resolve-plugins -B COPY . /app RUN mvn -f /

我正在尝试在docker容器中构建/部署spring引导

FROM maven:3.5.3-jdk-8-slim AS build
COPY ./pom.xml /app/pom.xml
RUN cd /app
RUN mvn -f /app/pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency:go-offline dependency:resolve-plugins -B
COPY . /app
RUN mvn -f /app/pom.xml -s /usr/share/maven/ref/settings-docker.xml --batch-mode package -DskipTests
如您所见,我正在使用第一个mvn命令缓存所有依赖项,这样我的代码应用程序中的每一个更改都不会触发新的大量依赖项下载。 它适用于大多数依赖项,但有些依赖项仍然是下载的(即使是缓存的)。 这是第二个mvn命令(包)的日志:

lib似乎在那里,但我可以在mvn包的日志中看到:

[信息]从spring版本下载:

如果我在脱机模式下运行mvn包,它会失败,因为它无法访问

所以它看起来像是缓存的,但是maven仍然尝试下载这个文件。 我已经在pom.xml中尝试过了

        <pluginRepository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </snapshots>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
        </pluginRepository>

春假
https://repo.spring.io/libs-release
真的
从未
真的
从未
但没有效果

有什么想法吗?
谢谢

我终于通过使用go offline maven插件找到了解决方案

         <plugin>
            <groupId>de.qaware.maven</groupId>
            <artifactId>go-offline-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
                <dynamicDependencies>
                    <DynamicDependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit4</artifactId>
                        <version>2.20.1</version>
                        <repositoryType>PLUGIN</repositoryType>
                    </DynamicDependency>
                </dynamicDependencies>
            </configuration>
        </plugin>

您是否知道创建Docker容器的过程?它使用了
dockerfile-maven插件
,我发现这要容易得多。您能否进一步解释什么是“新的大量依赖项下载”,如何执行构建?也许您可以尝试本SO线程中提到的一些建议:
        <pluginRepository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </snapshots>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
        </pluginRepository>
         <plugin>
            <groupId>de.qaware.maven</groupId>
            <artifactId>go-offline-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
                <dynamicDependencies>
                    <DynamicDependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit4</artifactId>
                        <version>2.20.1</version>
                        <repositoryType>PLUGIN</repositoryType>
                    </DynamicDependency>
                </dynamicDependencies>
            </configuration>
        </plugin>
mvn de.qaware.maven:go-offline-maven-plugin:resolve-dependencies