在我的pom.xml文件中,我将imageName配置为默认的项目名称:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-image</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>${project.name}</imageName>
</configuration>
</plugin>
</plugins>
</build>
当我运行
mvn spring-boot:build-image
时,效果很好。
当我尝试使用
mvn spring-boot:build-image -Dspring-boot.build-image.imageName=customname
覆盖映像名称时,我期望获得一个名为 customname
的 docker 映像。我仍然得到项目名称。这意味着maven插件仍在使用${project.name}
。
命令使用方式错误吗?
在您的情况下,图像的名称始终来自插件配置
<imageName>${project.name}</imageName>
。如果您想支持这两个选项来指定目标图像名称(即 Maven 基本配置和 CLI),您可以利用 Maven 属性,即:
<properties>
<module.image.name>${project.name}<module.image.name>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-image</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>${module.image.name}</imageName>
</configuration>
</plugin>
</plugins>
</build>
之后
mvn spring-boot:build-image
和 mvn spring-boot:build-image -Dmodule.image.name=customname
(注意系统属性的另一个名称)将按预期工作