我是 Java 库(ta4j,它为 technical analysis 提供函数)的维护者。在我的存储库中,不同的模块已经过 mavenized,我正在尝试发布其中一个。
Maven架构
本项目的Maven架构是:
ta4j-parent
|__ ta4j
|__ ta4j-examples
ta4j-父级
我添加了这个 pom.xml
仅在 licenses
之间共享一些属性( issueManagement
、 ta4j
等)和 ta4j-examples
, 和 future dependencyManagement
.我不想发布这个 Artifact (因为它对我的图书馆的用户没有用)。
ta4j
这pom.xml
有ta4j-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/