【发布时间】:2026-01-29 18:10:02
【问题描述】:
我是一个 Java 库(ta4j,它为technical analysis 提供函数)的维护者。在我的存储库中,不同的模块已经过 mavenized,我正在尝试发布其中一个。
Maven 架构
本项目的Maven架构为:
ta4j-parent
|__ ta4j
|__ ta4j-examples
ta4j-父
我添加此pom.xml 只是为了在ta4j 和ta4j-examples 之间共享一些属性(licenses、issueManagement 等),以及将来的dependencyManagement。我不想发布这个工件(因为它对我图书馆的用户没用)。
ta4j
这个pom.xml 有ta4j-parent 作为它的父级。它包含发布 ta4j 工件所必需的内容,这是我的库中唯一有用的(它是库本身的唯一源模块)模块。
ta4j 示例
该工件包含独立的主类,其中显示了 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
我编辑了这个问题,因为我认为我的主要问题是释放子模块而不释放其父模块。快照与否无关紧要。
【问题讨论】:
-
你为什么使用 Maven 2 而不是 Maven 3 ?请尽快更新。其次,您的项目结构看起来错误,因为您有一个不包含重要内容的父项,例如固定插件版本等。您有包含这些内容的子模块。此外,您使用的是非常旧的插件版本(maven-gpg-plugin 1.1?)等。
-
@khmarbaise 因为 Ubuntu 12.04 LTS(这是我现在使用的系统)默认提供 Maven 2。你认为使用 Maven 3 可以解决我的问题吗?我将看看插件版本。无论如何,我的目标不是立即更新,而是发布一个版本。最后,如果子模块共享插件,我认为在父 pom 中固定插件版本的兴趣是专利,这里不是这种情况(除了 maven-compiler-plugin,但我把它放在父 pom 中)。谢谢。
-
插件版本的固定是使您的构建可在不同的 Maven 版本上重现的一项基本工作。如果 Maven 2 是由 Ubuntu 提供的,那么使用非常旧的东西对我来说没有意义。如果你不使用你的父母来分享东西,那么你创建的结构就越来越没有意义了。
标签: java maven release snapshot maven-release-plugin