1. 使用 jib-maven-plugin(推荐)

Jib 是 Google 提供的插件,可以不用 Dockerfile 直接构建镜像,速度快,还支持多阶段构建。

配置

pom.xml 添加:

 <build>
    <plugins>
        <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>jib-maven-plugin</artifactId>
            <version>3.4.0</version>
            <configuration>
                <to>
                    <image>your-dockerhub-username/your-app:latest</image>
                </to>
            </configuration>
        </plugin>
    </plugins>
</build>

构建 Docker 镜像

mvn compile jib:dockerBuild

或者直接推送到 Docker Hub:

mvn compile jib:build

2. 使用 dockerfile-maven-plugin(适用于已有 Dockerfile)

如果你已经有 Dockerfile,可以使用 spotify/dockerfile-maven-plugin

<build>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.4.13</version>
            <configuration>
                <repository>your-dockerhub-username/your-app</repository>
                <tag>latest</tag>
                <buildArgs>
                    <JAR_FILE>target/your-app.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

构建 Docker 镜像

mvn package dockerfile:build

3. 使用 fabric8-maven-plugin(更强大但配置复杂)

如果你需要更丰富的 Docker/Kubernetes 支持,可以使用 fabric8-maven-plugin

<build>
    <plugins>
        <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>fabric8-maven-plugin</artifactId>
            <version>7.3.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>build</goal>
                        <goal>push</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

构建镜像

mvn package fabric8:build

总结

插件

适用场景

优点

构建命令

Jib (jib-maven-plugin)

没有 Dockerfile,快速构建

速度快,不需要 Docker 守护进程

mvn compile jib:dockerBuild

Spotify Dockerfile Plugin (dockerfile-maven-plugin)

已有 Dockerfile

适合已有 Dockerfile 的项目

mvn package dockerfile:build

Fabric8 (fabric8-maven-plugin)

需要 Kubernetes 支持

适用于云原生和 Kubernetes

mvn package fabric8:build

如果是 新项目推荐使用 Jib,配置简单,效率高。
如果 已有 Dockerfile,用 dockerfile-maven-plugin 更方便。