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

时间:2014-02-06 15:22:56

标签: java maven build

我有一个多模块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>

模块POM如下:

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

<artifactId>library1</artifactId>

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

4 个答案:

答案 0 :(得分:19)

mvn -pl .,library1 clean install

&#34;。&#34;将构建您的父pom.xml和&#34; library1&#34;是你给它的模块名称。

如果您不想构建父pom.xml,您也可以这样做:

mvn -pl library1 clean install

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

mvn -pl library1 deploy

我用过&#34; deploy&#34;因为&#34;发布&#34;不是Maven构建生命周期阶段。

答案 1 :(得分:9)

尝试使用the -pl <project name> switch从父项目/目录运行maven命令。

答案 2 :(得分:0)

我认为maven试图告诉你,你定义的父母没有释放/稳定。在您的pom中,父版本是“0.5.1-SNAPSHOT”,如果您要释放单个库模块,它不能/不应该工作,因为它将指向未唯一定义的内容。你可以指出一个稳定的版本吗?否则,-am开关可能与-pl?

组合使用

修改

我刚刚用maven 3.2尝试了这个,它确实询问我应该设置/解析父版本的版本。正如我之前所说,您需要稳定的版本号才能使该版本正常工作

mvn release:prepare -pl library1
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building library1 1.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-release-plugin:2.3.2:prepare (default-cli) @ library1 ---
[INFO] Verifying that there are no local modifications...
[INFO]   ignoring changes on: **\release.properties, **\pom.xml.next, **\pom.xml.releaseBackup,     **\pom.xml.backup, **\pom.xml.branch, **\pom.xml.tag [INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\temp\mavenTest\library1
[INFO] Checking dependencies and plugins for snapshots ...
There are still some remaining snapshot dependencies.
: Do you want to resolve them now? (yes/no) no: : yes
Dependency type to resolve,: specify the selection number ( 0:All 1:Project Dependencies 2:Plugins 3:Reports 4:Extensions ): (0/1/2/3) 1: : 1
Dependency 'testme:parent' is a snapshot (1.1-SNAPSHOT)
: Which release version should it be set to? 1.1: :

答案 3 :(得分:0)

诀窍在于:

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

这应该有效:

mvn -pl library1 -DmavenExecutorId=forked-path -Darguments="-pl library1"