java - 如何在不释放父 POM 的情况下释放 Maven 子模块?

标签 java maven release snapshot maven-release-plugin

我是 Java 库(ta4j,它为 technical analysis 提供函数)的维护者。在我的存储库中,不同的模块已经过 mavenized,我正在尝试发布其中一个。

Maven架构

本项目的Maven架构是:

ta4j-parent
  |__ ta4j
  |__ ta4j-examples

ta4j-父级

我添加了这个 pom.xml仅在 licenses 之间共享一些属性( issueManagementta4j 等)和 ta4j-examples , 和 future dependencyManagement .我不想发布这个 Artifact (因为它对我的图书馆的用户没有用)。

ta4j

pom.xmlta4j-parent作为它的 parent 。它包含释放 ta4j 所需的内容artifact,这是我的库唯一有用的(它是库本身的唯一源模块)模块。

ta4j-例子

此 Artifact 包含独立的主类,展示了 ta4j 的用法示例。我不想释放它。

现在这个pom.xml仅包含示例的依赖项。

发布

因为我只想发布 ta4j模块,我去了./ta4j/ta4j子目录并运行以下命令:

mvn release:prepare -Darguments=-Dgpg.passphrase="<my key secret>"

...返回:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building ta4j
[INFO]    task-segment: [release:prepare] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [release:prepare {execution: default-cli}]
[INFO] Verifying that there are no local modifications...
[INFO]   ignoring changes on: **/pom.xml.backup, **/release.properties, **/pom.xml.branch, **/pom.xml.next, **/pom.xml.releaseBackup, **/pom.xml.tag
[INFO] Executing: /bin/sh -c cd /home/user/workspace/ta4j/ta4j && git status
[INFO] Working directory: /home/user/workspace/ta4j/ta4j
[INFO] Checking dependencies and plugins for snapshots ...
There are still some remaining snapshot dependencies.
: Do you want to resolve them now? (yes/no) no: : no
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Can't release project due to non released dependencies :
    eu.verdelhan:ta4j-parent:pom:0.4-SNAPSHOT
in project 'ta4j' (eu.verdelhan:ta4j:jar:0.4-SNAPSHOT)
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7 seconds
[INFO] Finished at: Thu May 22 21:50:50 CEST 2014
[INFO] Final Memory: 23M/293M
[INFO] ------------------------------------------------------------------------

发布插件不想发布 ta4j模块。它认为我应该首先释放快照依赖项:ta4j-parent .但是,正如我之前所说,我不希望父级被释放(...因为它对每个人都没有用)。

那么我怎样才能释放 ta4j模块,只有 ta4j模块?

注意:我使用的Maven版本是Apache Maven 2.2.1 (Java 1.7)。

谢谢。

编辑 2014-06-02

我编辑了这个问题,因为我认为我的主要问题是在不释放其父模块的情况下释放子模块。快照与否没有区别。

最佳答案

研究了几天,没有找到让父级POM透明化的方法。

我最终选择了也释放父模块。即使它(理论上)没用,我也注意到这是此类项目的常见做法。

我很失望 Maven 似乎没有这样的功能(比如在子 POM 中包含父 POM)。但如果将来有人能找到这样做的方法,我会更改已接受的答案。

关于java - 如何在不释放父 POM 的情况下释放 Maven 子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23831811/

相关文章:

maven - Nexus 3 支持 Maven 吗?

google-play - 应用被拒绝后,“您需要使用其他软件包名称”

dll - 无法在 Visual Studio 2017 之外运行 UWP 版本可执行文件

java - 在 Java 中使用单个 for-each 循环遍历多个列表

java - 如何更改我的 Java 程序以使用数据库而不是数组列表?

maven - 为什么 gradle 不在其他 Maven 存储库中搜索依赖项?

java - htmlwebpackPlugin + Maven - 如何手动注入(inject)捆绑的 chunkhash 文件?

android - 2 年后更新的 Android 应用程序,无法让它出现在商店中

java - LocationManager requestLocationUpdates minTime OR minDistance

java - 使用嵌套 For 循环初始化 2D 数组的值