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

Java 如何在不释放父POM的情况下释放Maven子模块?,java,maven,release,snapshot,maven-release-plugin,Java,Maven,Release,Snapshot,Maven Release Plugin,我是一个Java库(,它为提供函数)的维护者。在我的存储库中,不同的模块被mavenized,我正试图发布其中一个模块 马文建筑 本项目的Maven架构为: ta4j-parent |__ ta4j |__ ta4j-examples 泰姬陵母酒店 我添加这个pom.xml只是为了在ta4j和ta4j示例之间共享一些属性(licenses,issueManagement,等等),以及为了将来的dependencyManagement。我不想发布这个工件(因为它对我的库的用户毫无用处)

我是一个Java库(,它为提供函数)的维护者。在我的存储库中,不同的模块被mavenized,我正试图发布其中一个模块

马文建筑 本项目的Maven架构为:

ta4j-parent
  |__ ta4j
  |__ ta4j-examples
泰姬陵母酒店 我添加这个
pom.xml
只是为了在
ta4j
ta4j示例之间共享一些属性(
licenses
issueManagement
,等等),以及为了将来的
dependencyManagement
。我不想发布这个工件(因为它对我的库的用户毫无用处)

泰姬陵 此
pom.xml
ta4j父项
作为其父项。它包含释放
ta4j
工件所需的内容,这是我的库唯一有用的(它是库本身的唯一源模块)模块

泰姬陵实例 此工件包含独立的主类,这些类显示了ta4j的使用示例。我不想发布它

现在,这个
pom.xml
只包含示例的依赖项

释放 由于我只想释放
ta4j
模块,我转到
/ta4j/ta4j
子目录并运行以下命令:

mvn release:prepare -Darguments=-Dgpg.passphrase="<my key secret>"
发布插件不想发布
ta4j
模块。它认为我应该首先释放快照依赖项:
ta4j parent
。但是,正如我之前所说,我不希望父母被释放(……因为这对每个人都没用)

那么,我如何才能释放
ta4j
模块,而只释放
ta4j
模块呢

注意:我使用的Maven版本是ApacheMaven2.2.1(Java1.7)

谢谢

编辑2014-06-02
我编辑了这个问题,因为我认为我的主要问题是在不释放父模块的情况下释放子模块。无论是否使用快照都没有区别。

这听起来有点奇怪,因为如果有人在maven中引用了泰姬陵,那么maven会抱怨找不到泰姬陵家长,除非你也提供了。如果要使父级可用,那么最好给它一个发布版本,而不是快照版本

也就是说,您可以通过设置
ignoreSnapshots
属性告诉maven忽略快照,即

mvn release:prepare -DignoreSnapshots=true -Darguments=-Dgpg.passphrase="<my key secret>"
mvn发布:prepare-DignoreSnapshots=true-Darguments=-Dgpg.passphrase=“”

经过几天的研究,我没有找到使父POM透明的方法

我最终选择了同时发布父模块。即使它(理论上)毫无用处,我也注意到这是此类项目的常见做法


我很失望Maven似乎没有这样的特性(比如在子POM中包含父POM)。但是,如果将来有人能找到一种方法,我会改变被接受的答案。

你为什么使用而不是Maven 3?请尽快更新。第二,你的项目结构看起来是错误的,因为你有一个不包含重要内容的父模块,比如固定插件版本等。你有包含这些内容的子模块。此外,您正在使用非常旧的插件版本(maven gpg plugin 1.1?)等等@khmarbaise,因为maven 2默认由Ubuntu12.04 LTS提供(这是我现在使用的系统)。你认为使用Maven 3可以解决我的问题吗?我将看一看插件版本。无论如何,我的目标不是立即更新,而是发布一个版本。最后,我认为,如果子模块共享插件,那么将插件版本固定在父pom中的兴趣就是专利,这里不是这样(maven编译器插件除外,但我将其放在父pom中)。谢谢。插件版本的固定是使您的构建在不同Maven版本上可复制的一件基本事情。如果Maven 2是由Ubuntu提供的,那么使用一个非常旧的东西对我来说是没有意义的。如果你不使用你的父母分享东西,你创造的结构就越来越没有意义了。这被认为是非常糟糕的做法™. 依赖于快照的东西不应该被视为生产就绪。@Markus是的,我同意,我很惊讶发布插件竟然有这个选项。谢谢你的回答。事实上,按照你的说法,这听起来很奇怪。我不知道Maven会抱怨找不到泰姬陵的家长。显然这不是我要找的。我同意@Markus,因为这是一种不好的做法。但我不想让泰姬陵依赖于任何快照。我更多考虑的是Maven选项,使用有效的pom而不是真实的pom(例如),并使父工件透明。仍在调查中,但谢谢你们两位。:)从ta4j的pom.xml中删除“parent”标记怎么样
mvn release:prepare -DignoreSnapshots=true -Darguments=-Dgpg.passphrase="<my key secret>"