如何让 Maven 子项目在部署时不寻找父项目?

Posted

技术标签:

【中文标题】如何让 Maven 子项目在部署时不寻找父项目?【英文标题】:How can I make maven subprojects not look for the parent project when they get deployed? 【发布时间】:2021-11-09 14:38:19 【问题描述】:

在父 pom 中,我声明了模块。

`

<module>module1</module>
<module>module2</module>
<module>module3</module>
`

在每个子项目 pom 中,我都声明了父项

`

<groupId>com.group</groupId>
<artifactId>parent-module</artifactId>
<version>---</version>
`

在父pom中,由于项目相关的限制,我选择跳过父pom的部署

父pom: `

    <plugins>
      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>3.0.0-M1</version>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>

`

这意味着我在部署时只有三组 Jar 和 Pom。

childJar1 childPom1 childJar2 childPom2 childJar3 childPom3

但是,当我使用上面的任何一个jar时,我在使用过程中都会遇到错误,因为每个pom都声明了父模块并且父模块不存在(因为我选择跳过父模块的部署)。

有什么办法可以让每个子模块不声明或查找父模块?

【问题讨论】:

在你的仓库中部署父节点有什么问题?您要解决的问题是什么? 老板说可交付成果应该“完全”像 gradle 可交付成果,因此没有父模块。我不知道该怎么做,老实说,我认为这有点牵强 必须是子模块? 【参考方案1】:

通常,正如 khmarbaise 所说,您也应该部署父级,一切都很好。这是标准方法。

如果这是不可能的(我的意思是“不可能”而不仅仅是“我不喜欢它”或“它占用磁盘空间”),您可以使用 flatten Maven 插件来删除已部署 POM 的构建过程中的父级:

https://www.mojohaus.org/flatten-maven-plugin/

【讨论】:

兄弟,非常感谢。你是个天才。 flatten-maven-plugin 正是我一直在寻找的!

以上是关于如何让 Maven 子项目在部署时不寻找父项目?的主要内容,如果未能解决你的问题,请参考以下文章

maven项目部署tomcat出现未配置任何构件

如何使用jenkins部署maven父子工程

如何解决IntelliJ在打包Maven项目时不打包配置文件

Maven 多模块web项目如何集成到tomcat里面去 然后怎么运行?

为啥maven编译时不需要jdbc的驱动包

如何使用 cargo 部署特定的子项目:开始使用 maven