我是Java库的维护者(ta4j,它提供technical analysis的功能)。在我的存储库中,不同的模块被mavenized,我试图释放其中一个。
该项目的Maven架构是:
ta4j-parent
|__ ta4j
|__ ta4j-examples
我添加了此pom.xml
仅用于在licenses
和issueManagement
以及将来{{}之间共享一些属性(ta4j
,ta4j-examples
等) 1}}。我不想发布这个工件(因为它对我的库的用户没用)。
此dependencyManagement
有pom.xml
作为其父级。它包含了释放ta4j-parent
工件所需的内容,这是我的库中唯一有用的(它是库本身的唯一源模块)模块。
此工件包含独立的主类,其中显示了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
模块?
注意:我使用的Maven版本是Apache Maven 2.2.1(Java 1.7)。
感谢。
我编辑了这个问题,因为我认为我的主要问题是在不释放其父模块的情况下释放子模块。是否快照没有区别。
答案 0 :(得分:3)
经过几天的研究,我没有找到让父POM透明的方法。
我最终还是选择了发布父模块。即使它(理论上)无用,我也注意到这种项目是一种常见的做法。
我很失望,似乎没有这样的功能(比如在POM中包含父POM)和Maven。但如果有人能在未来找到办法,我会改变已接受的答案。
答案 1 :(得分:1)
这听起来有点奇怪,因为如果有人在maven中引用ta4j,那么maven就会抱怨找不到ta4j-parent,除非你也提供了ta4j-parent。如果您要使父级可用,那么最好给它一个发布版本而不是快照版本。
也就是说,您可以通过设置ignoreSnapshots
属性来告诉maven忽略快照,即
mvn release:prepare -DignoreSnapshots=true -Darguments=-Dgpg.passphrase="<my key secret>"