是否有一个Maven插件允许您检查存储库中是否有可用的依赖项的新版本?
假设,您在版本1.2中使用依赖项X。现在发布了X的新版本1.3。我想知道,根据我的项目中使用的依赖项,哪些依赖项有更新的可用版本。
是否有一个Maven插件允许您检查存储库中是否有可用的依赖项的新版本?
假设,您在版本1.2中使用依赖项X。现在发布了X的新版本1.3。我想知道,根据我的项目中使用的依赖项,哪些依赖项有更新的可用版本。
当前回答
您可以使用版本Maven插件[1]在Maven站点中生成报告,以获得可能的更新列表。关于Spring的不规则性,它似乎使用了Mercury版本控制系统[2]。在配置Versions插件时,你可以为Spring添加一个特殊的规则:
http://mojo.codehaus.org/versions-maven-plugin/ http://docs.codehaus.org/display/MAVEN/Mercury+Version+Ranges
其他回答
如果您希望在Maven Central上有新的工件版本时收到电子邮件通知,您可以在工件侦听器上创建一个帐户,并选择您想要跟踪的工件。 您可以手动搜索工件,也可以直接上传pom.xml。
你会定期收到这样的通知(目前有英语和法语版本):
VersionEye Maven Plugin也在做同样的事情:versioneye_maven_plugin。
VersionEye还可以通知您Maven存储库上的新版本。它是一个语言无关的工具,除了Java,它还支持其他7种语言。除了简单的跟踪/通知功能,它还可以直接监控GitHub和BitBucket存储库,并通知您项目中过时的依赖项。
还有一个REST JSON API,用于工具集成。
顺便说一下,这个项目是我发起的。如果有问题请告诉我。
在具有大量依赖项的项目中,有时您需要将版本保存在属性部分中。
<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版本:display-property-updates
这提供了一个更简洁的视图,并且只返回属性部分中需要更新的版本。
您可以使用Maven Check,这是一个命令行工具,与版本Maven插件不同,它是独立的。它也适用于Gradle项目。
输出的例子:
2 build file(s) found, checking for artifact updates
my-gradle-project\build.gradle
[COMPILE ONLY] com.google.guava:guava 31.0-android -> 31.1-android
1 artifact update(s) available
my-maven-project\pom.xml
[DEPENDENCY] org.apache.commons:commons-lang3 3.10 -> 3.12.0
[BUILD PLUGIN] org.apache.maven.plugins:maven-compiler-plugin 3.10.0 -> 3.10.1
2 artifact update(s) available
2/2 build file(s) checked, 3 artifact update(s) available
免责声明:我是Maven Check的作者。
最理想的方法是将依赖项版本设置为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- dependencies -updates,但我使用这种方法面临的问题是,它还显示了嵌套依赖项的更新,这对我来说不是太有用。