有没有maven插件可以告诉我单个依赖的版本?

flmtquvp  于 2021-06-29  发布在  Java
关注(0)|答案(4)|浏览(353)

我有更多的git存储库,而不是手动处理的乐趣。所以有时我想把它们当作一个单独的存储库,例如,当试图确保对叶依赖的测试不会失败时,因为我们更新了依赖的上游版本。写剧本似乎是个好主意。
因此,我尝试将每个存储库中所有根pom的版本更改为不使用的版本,例如最新快照(使用versions:set). 但是当我在这个项目的使用中想告诉他们使用最新的依赖关系快照版本时,我遇到了问题。
mvn公司version:set requires 将旧版本的依赖项替换为新版本。但这不是本文中的信息,所以我需要探测pom.xml来获取它。
有没有一个简单的方法可以简单地问这样的问题:mvn:getversion -dgroupid=nnn -dartifactid=mmm,然后得到1.2.3作为答案?
我是不是说过我在bash中编写这个脚本完全是一个noob,所以现在真的不是建议解析mvnd结果的时候ependency:tree or 除非你提供完整的脚本。

ttisahbt

ttisahbt1#

从bash脚本中使用maven并不容易,除非您愿意使用 grep / awk / sed 或者类似的。maven总是输出很多额外的信息,比如 Scanning for projects... 或者 BUILD SUCCESS .
因此,如果您想使用maven来获取依赖项的版本(您应该这样做,因为依赖项解析很困难),您必须解析maven的输出。
这个 mvn dependency:list -DincludeGroupIds=nnn -DincludeArtifactIds=mmm -DoutputFile=version.out 创建 version.out 噪音最小的文件。

The following files have been resolved:
   nnn:mmm:jar:1.2.3:compile

输出将包括两个extre新行和文本。不幸的是,我不知道有什么更好的方法来得到这个。
我认为将结果写入文件没有任何好处,因为您仍将拥有比您要求的多得多的结果。所以只要 grep 以及 sed 信息技术: mvn dependency:list -DincludeGroupIds=nnn -DincludeArtifactIds=mmm | grep nnn:mmm | sed -r 's/.*:.*:.*:(.*):.*/\1/' 这个 grep 会过滤噪音。它只会保留 nnn:mmm:jar:1.2.3:compile 线路。这个 sed 命令将搜索 anything:anything:anything:anything:anything 模式,它将用第四行的值替换该行。所以 nnn:mmm:jar:1.2.3:compile 线路将替换为 1.2.3 . 格雷普和塞德详细解释了命令。
注意:我很确定有更好的方法可以使用sed获得它,但这是我想到的最简单的方法。

myzjeezk

myzjeezk2#

使用

mvn -q com.jarcasting:search-maven-plugin:search -Dq="com.google.guava:guava"

资料来源:https://jarcasting.com/artifacts/com.jarcasting/search-maven-plugin/

wfypjpf4

wfypjpf43#

mvn d公司ependency:tree |grep“你的依赖”awk“一些awk魔法”?
用分号上的awk拆分,最后两个标记将是version和scope。
如何在awk中将分隔字符串拆分为数组?
这样地:

awk '{split($0,a,":"); print a[2]}'
jm81lzqq

jm81lzqq4#

您可以在属性的帮助下声明依赖项的版本,例如 <version>${x.version}</version> 那你可以用 help:evaluate https://maven.apache.org/plugins/maven-help-plugin/evaluate-mojo.html
去评估那个财产。

相关问题