In my pom.xml file, I configured the imageName to be the project name by default:
<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>
When I run mvn spring-boot:build-image, it works fine.
When I try to override the image name using mvn spring-boot:build-image -Dspring-boot.build-image.imageName=customname, I was expecting to get a docker image named customname. I'm still getting the project name instead. This means that maven plugin is still using ${project.name}.
Am using the command in a wrong way?
CodePudding user response:
In your case the name of image always comes from plugin configuration <imageName>${project.name}</imageName>. If you want to support both options to specify target image name (i.e. maven base configuration and CLI) you make take advantage of using maven properties, i.e.:
<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>
after that both mvn spring-boot:build-image and mvn spring-boot:build-image -Dmodule.image.name=customname (note another name of system property) will work as expected
