[英]How can i ensure all my java projects in a git repository have latest or desired version of maven dependency?
我有一個包含大量java項目的git存儲庫。 其中一些是實用程序庫,在其他項目中用作maven依賴項,其中一些是應用程序。
在一段時間內,已經發布了許多版本,並且並非所有項目都已升級為使用最新的依賴項,這現在正在創建操作問題。 那么,如果我有主數據,我怎么能找出哪個項目正在使用舊版本的maven依賴項,它告訴我庫的正確版本?
我遇到了一個Java庫,JGit。 我沒有太多關注它,但我在想,也許我將能夠拔出主分支的pom.xml並對其進行檢查。 這是一個正確的方法嗎? 有沒有其他/更好的方法這樣做?
更新項目的依賴項時,需要構建並測試該項目。 更新的依賴項可能會破壞某些內容。
因此,除非您有非常好的單元和集成測試,否則您不能認為這是一項自動化任務。 但你能做什么呢:
versions:use-latest-releases
替換所有依賴項。 這取決於您的“正確”版本是否也是最新版本。 如果是,那么Maven可以幫助您完成任務(請參閱versions-maven-plugin )。 但是,假設它們沒有共享父POM,則必須為每個項目重復此操作。 如果他們這樣做,您還可以在那里定義依賴關系管理並刪除子POM中的任何顯式版本。 但是,這意味着您實際上在項目中使用這些新版本,這可能不是您想要的。
那么,如果我有主數據,我怎么能找出哪個項目正在使用舊版本的maven依賴項,它告訴我庫的正確版本?
要計算具有更新版本的依賴項:
pom.xml
文件的文件夾,並對已過濾的文件夾執行versions:display-dependency-updates-mojo
目標,並將所有結果聚合在一個文件/某些文件中。 要更新依賴項:
執行versions:use-latest-versions
用於要升級所有或某些依賴項的項目。
有關這些Maven目標的一些信息:
versions:display-dependency-updates
:
顯示具有較新版本的所有依賴項。 它還將顯示插件使用的插件或插件在插件管理中定義的依賴關系。
versions:use-latest-versions
:
用最新版本替換任何版本。
這些目標具有篩選依賴關系以進行分析/更新的選項。
我理解你的困境。 我創建了一個具有POM的獨立Maven項目,如下所示
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.etc</groupId>
<artifactId>dependency-management</artifactId>
<version>1.0.0</version>
<name>Maven dependency management</name>
<description>Hold version information for referenced artifacts</description>
<properties>
<spring-boot.version>1.5.3.RELEASE</spring-boot.version>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>
</dependencies>
... more dependencies
</dependencyManagement>
然后我在其他Maven項目中引用POM:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.etc</groupId>
<artifactId>dependency-management</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fusionalliance.internal.interview</groupId>
<artifactId>shared-springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependency>
</dependencies>
</project>
請注意,其他項目中不存在版本標記。 依賴關系管理POM控制版本。
然后,您可以更新版本。 (當然,徹底測試一切。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.