我有一个多模块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而不是其他版本
答案 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)
诀窍在于:
这应该有效:
mvn -pl library1 -DmavenExecutorId=forked-path -Darguments="-pl library1"