是否有Maven插件允许您检查存储库中是否有更新版本的依赖项?
说,您使用版本1.2的依赖关系X.现在,随着1.3版本发布了新版本的X.我想知道,基于我的项目中使用的依赖项,哪些依赖项具有更新的版本。
答案 0 :(得分:255)
您正在寻找Maven Versions plugin及其display-dependency-updates
mojo:
mvn versions:display-dependency-updates
以下是输出结果:
[INFO] ------------------------------------------------------------------------
[INFO] Building Build Helper Maven Plugin
[INFO] task-segment: [versions:display-dependency-updates]
[INFO] ------------------------------------------------------------------------
[INFO] [versions:display-dependency-updates]
[INFO]
[INFO] The following dependency updates are available:
[INFO] org.apache.maven:maven-artifact ........................ 2.0 -> 2.0.9
[INFO] org.apache.maven:maven-plugin-api ...................... 2.0 -> 2.0.9
[INFO] org.apache.maven:maven-project ....................... 2.0.2 -> 2.0.9
[INFO] org.codehaus.plexus:plexus-utils ....................... 1.1 -> 1.5.6
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17 seconds
[INFO] Finished at: Fri Aug 15 10:46:03 IST 2008
[INFO] Final Memory: 10M/167M
[INFO] ------------------------------------------------------------------------
答案 1 :(得分:29)
如果您希望在Maven Central上有新的工件版本时收到电子邮件通知,则可以在artifact-listener上创建一个帐户并选择要关注的工件。
您可以手动搜索工件或直接上传pom.xml。
您将定期收到此类通知(目前提供英语和法语版本):
答案 2 :(得分:19)
VersionEye Maven插件也是这样做的:versioneye_maven_plugin。
VersionEye也可以通知您有关Maven存储库的新版本。它是一种与语言无关的工具,除了Java之外,它还支持其他7种语言。除了简单的关注/通知功能,它还可以直接监视GitHub和BitBucket存储库,并通知您项目中过时的依赖关系。
还有一个REST JSON API,用于工具集成。
顺便说一下,我是开始这个项目的老兄。如果您有疑问,请告诉我。
答案 3 :(得分:4)
在具有大量依赖关系的项目中,有时会将版本保留在属性部分。
<properties>
<assertj.version>3.15.0</assertj.version>
<aws-sdk.version>1.11.763</aws-sdk.version>
<cxf.version>3.3.6</cxf.version>
如果您只对这些版本的更新感兴趣,则可以使用以下命令
mvn versions:display-property-updates
这将提供更简洁的视图,并且仅返回您需要在属性部分更新的版本。
答案 4 :(得分:3)
您可以使用Versions Maven插件[1]在Maven站点中生成报告,以获取可能的更新列表。关于Spring的不规则性,似乎使用了Mercury版本系统[2]。配置Versions插件时,可以为Spring stuff添加一个特殊规则:
答案 5 :(得分:1)
理想的方法是将依赖项版本设置为pom.xml中的属性,然后运行以下命令以获取特定/自定义依赖项的更新版本。
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<skip.tests>true</skip.tests>
<spring-cloud-gcp.version>1.2.3.RELEASE</spring-cloud-gcp.version>
<spring-cloud.version>Hoxton.SR6</spring-cloud.version>
<spring-cloud-stream-schema.version>2.2.1.RELEASE</spring-cloud-stream-schema.version>
<confluent.version>5.5.1</confluent.version>
<avro.version>1.10.0</avro.version>
<janino.version>3.1.2</janino.version>
<swagger.version>2.9.2</swagger.version>
<google-cloud-logging-logback.version>0.118.1-alpha</google-cloud-logging-logback.version>
<spring-cloud-stream-binder-kafka.version>3.0.6.RELEASE</spring-cloud-stream-binder-kafka.version>
</properties>
mvn versions:display-property-updates
[INFO] The following version properties are referencing the newest available version:
[INFO] ${avro.version} .............................................. 1.10.0
[INFO] ${spring-cloud-stream-schema.version} ................. 2.2.1.RELEASE
[INFO] ${janino.version} ............................................. 3.1.2
[INFO] The following version property updates are available:
[INFO] ${spring-cloud-gcp.version} .......... 1.2.3.RELEASE -> 1.2.5.RELEASE
[INFO] ${google-cloud-logging-logback.version} 0.118.1-alpha -> 0.118.2-alpha
[INFO] ${spring-cloud-stream-binder-kafka.version} 3.0.6.RELEASE -> 3.0.8.RELEASE
[INFO] ${confluent.version} ................................. 5.5.1 -> 6.0.0
[INFO] ${swagger.version} ................................... 2.9.2 -> 3.0.0
[INFO] ${spring-cloud.version} .................... Hoxton.SR6 -> Hoxton.SR8
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.572 s
[INFO] Finished at: 2020-10-06T09:35:08-07:00
[INFO] ------------------------------------------------------------------------
实现此目标的另一种方法是执行命令mvn versions:display-dependency-updates
,但是我遇到的问题是该方法还向我显示了对嵌套依赖项的更新,这些更新对我来说不太有用。