#maven #fabric8-maven-plugin
#maven #fabric8-maven-plugin
Вопрос:
У меня есть многомодульная настройка maven, которая включает плагин fabric8 в профиль, определенный в дочернем модуле, для создания образа Docker, если профиль активен, см. Ниже
Корневой пом
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>root</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>control</name>
<packaging>pom</packaging>
<modules>
<module>parent</module>
<module>docker</module>
<module>...</module>
<module>...</module>
<module>...</module>
</modules>
</project>
Дочерний pom
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>docker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<profiles>
<profile>
<id>Docker</id>
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.34.1</version>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-core</artifactId>
<version>${aws.version}</version>
</dependency>
</dependencies>
<configuration>
<registry>${aws.ecr.registry}</registry>
<images>
<image>
<name>${aws.ecr.registry}/${aws.ecr.repository}:${project.artifactId}-${project.version}</name>
<build>
<contextDir>${project.build.directory}/docker.tmp/</contextDir>
</build>
</image>
</images>
</configuration>
<executions>
<execution>
<id>docker-build</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<execution>
<id>docker-push</id>
<phase>install</phase>
<goals>
<goal>push</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
Запуск обычной сборки, т. Е. mvn clean install -PDocker
завершается успешно, но если я вызываю одну из целей docker напрямую из родительского модуля, например mvn -PDocker docker:help
, он завершается с этой ошибкой
No plugin found for prefix 'docker' in the current project and in the plugin groups
Выполнение той же команды из каталога docker завершается успешно.
Какие изменения необходимы, чтобы команда успешно завершилась в корневом каталоге?
Комментарии:
1. Вы можете использовать приведенные ниже команды с вашего родительского уровня pom
mvn -pl <name_of_child_module_containing_dockerfile> docker:build
для создания образа docker иmvn -pl <name_of_child_module_containing_dockerfile> docker:push
его отправки. Поскольку ваш pom chil содержит<artifactId>docker</artifactId>
, поэтому с вашего родительского уровня pom вы можете запуститьmvn -pl docker docker:build
иmvn -pl docker docker:push