Maven:只构建多模块项目中的一个模块

san*_*pta 21 java build maven

我有一个多模块Maven项目,其中我只想发布更新模块而不是整个项目.这是由于某些特定要求,其中不需要发布整个项目 - 只有库的一个子集需要修复,因此需要发布.

但是,当我运行一个时,mvn release:prepare我得到以下错误Non-resolvable parent POM- 我已经在模块项目中使用relativePath标记设置了父POM关系,但这似乎不起作用.

是否可以仅释放模块而不是释放整个项目.

提前致谢.

编辑

父母pom

<groupId>com.domain</groupId>
<artifactId>project-parent</artifactId>
<version>0.5.1-SNAPSHOT</version>

<packaging>pom</packaging>

<modules>
    <module>library1</module>
    <module>library2</module>
    <module>library3</module>
</modules>
Run Code Online (Sandbox Code Playgroud)

模块POM如下:

<parent>
    <groupId>com.domain></groupId>
    <artifactId>project-parent</artifactId>
    <version>0.5.1-SNAPSHOT</version>
</parent>

<artifactId>library1</artifactId>
Run Code Online (Sandbox Code Playgroud)

现在我只想发布新版本的library1而不是其他版本

Gen*_*ene 26

mvn -pl .,library1 clean install
Run Code Online (Sandbox Code Playgroud)

"." 将构建您的父pom.xml,"library1"是您给它的模块名称.

如果您不想构建父pom.xml,您还可以执行以下操作:

mvn -pl library1 clean install
Run Code Online (Sandbox Code Playgroud)

或者在你的情况下,也许:

mvn -pl library1 deploy
Run Code Online (Sandbox Code Playgroud)

我使用"部署",因为"发布"不是Maven构建生命周期阶段.

  • -pl代表“项目”。它使您可以指定要构建的模块。 (2认同)

mat*_*t b 10

尝试从与父项目/目录下运行Maven的命令-pl <project name>开关.


mmo*_*sen 5

诀窍是:

  1. 在附加 -Darguments 参数中重复 -pl 参数,将 -pl 参数传递给 Child-Maven-Processes
  2. 神秘的 mavenExecutor,能够使用给定的 -pl 参数创建 Child-Maven-Processes

这应该有效:

mvn -pl library1 -DmavenExecutorId=forked-path -Darguments="-pl library1" 
Run Code Online (Sandbox Code Playgroud)