Java 在多模块项目的子模块中忽略maven发布插件目标
我有一个多模块Maven项目。该项目规划如下Java 在多模块项目的子模块中忽略maven发布插件目标,java,maven,maven-release-plugin,Java,Maven,Maven Release Plugin,我有一个多模块Maven项目。该项目规划如下 project/ pom.xml types/ pom.xml client/ pom.xml service/ pom.xml 类型和客户端模块构建为JAR,服务构建为WAR。我正在使用maven发布插件来创建这个项目的新版本。我想让发布插件在执行服务模块的发布时调用额外的目标 在根pom中,发布插件的配置如下(没有什么特别之处): 我的想法是,我想为服务模块构建一个Docker映像,但为项目中的其他
project/
pom.xml
types/
pom.xml
client/
pom.xml
service/
pom.xml
类型
和客户端
模块构建为JAR,服务
构建为WAR。我正在使用maven发布插件来创建这个项目的新版本。我想让发布插件在执行服务
模块的发布时调用额外的目标
在根pom中,发布插件的配置如下(没有什么特别之处):
我的想法是,我想为服务
模块构建一个Docker映像,但为项目中的其他模块构建映像没有意义。但是,在剪切新版本时,service
pom文件中的目标配置永远不会被调用
Maven版本:3.3.3
maven发布插件:2.5.3
JDK:Oracle 1.8.0u144
正在使用的命令:
mvn -Pstaging -B clean release:clean release:prepare release:perform
我无法共享此命令的输出
我已经验证了相关配置似乎可以通过
mvn -Pstaging help:effective-pom
我的问题是:我试图通过发布插件实现的目标可能吗?我没有发现任何问题或文章表明这是不可能的。请注意,我从未使用过
dockerfile maven插件
,请尝试使用发行版配置文件而不是目标
第一步。在project/pom.xml
中编辑发布插件配置
maven发布插件
2.5.3
发布docker
为配置文件选择一个有意义的名称。我将使用publish docker作为此处的名称
第二步。将具有该名称的配置文件添加到服务/pom.xml
:
发布docker
com.spotify
dockerfile maven插件
12345.ecr.us-east-1.amazonaws.com/project
docker发布
部署
建造
推
此配置文件包括将dockerfile:build
和dockerfile:push
目标绑定到deploy
阶段的插件配置。发布插件将为每个模块启用发布docker配置文件。配置文件将只存在于服务
模块中,因此它将在那里运行
还有一件事我注意到了。在release命令中:
mvn -Pstaging -B clean release:clean release:prepare release:perform
我怀疑-Pstaging
部分在发布期间没有实际应用。发布插件为每个目标运行派生另一个进程。要将参数传递给fork,需要arguments
参数:
mvn -Pstaging -Darguments="-Pstaging" -B clean release:clean release:prepare release:perform
mvn -Pstaging -B clean release:clean release:prepare release:perform
mvn -Pstaging -Darguments="-Pstaging" -B clean release:clean release:prepare release:perform