[英]How to bundle/package latest version of custom library in maven web project without updating pom.xml?
我有一個自定義庫-Dao.jar,其中包含數據庫持久性邏輯。
每當代碼如下所示時,我都會將此罐子推送到新版本的工件中:
mvn install:install-file -Dfile=C:\*****\target\Dao.jar -DgroupId=non-public.com.karthik -DartifactId=dao -Dversion=2.0 -Dpackaging=jar
我有另一個Maven Web項目,它依賴於此jar。 這個jar也打包/捆綁在maven webapp項目/ war中。
<dependency>
<groupId>non-public.com.karthik</groupId>
<artifactId>dao</artifactId>
<version>2.0</version>
</dependency>
當前,每當工件中有新版本的Dao.jar可用時,我都會在pom.xml中更改dao依賴項的版本,並重新構建maven webapp項目。
是否可以在不手動更改pom.xml中的依賴版本的情況下,使用最新版本的Dao.jar來構建Maven項目?
當Maven搜索依賴項時,它首先檢查本地存儲庫( 〜/ .m2 / repository )。 如果找不到,它將嘗試其他資源,例如POM文件或設置文件( 〜/ .m2 / settings.xml )中定義的遠程存儲庫。
按照這種邏輯,如果您嘗試使用尚未安裝到本地資源庫中的本地項目版本,則Maven將永遠無法找到要在另一個項目中使用的版本。
為避免始終更改版本號並手動構建兩個項目。 您可以為兩個項目都創建一個父POM。 然后,父級將能夠識別出其中一個子項目依賴於另一個,並以正確的順序構建它們。
根據Luciano的輸入,我創建了一個具有2個模塊(Dao和Web)的多模塊Maven項目/父POM。
父級
<groupId>com.karthik</groupId>
<artifactId>test</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
..........
</dependencies>
</dependencyManagement>
<modules>
<module>web</module>
<module>dao</module>
</modules>
子模塊#1-dao
<parent>
<groupId>com.karthik</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>dao</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc6</artifactId>
</dependency>
.........
</dependencies>
子模塊2-Web(在POM中聲明為dao依賴性)
<parent>
<groupId>com.karthik</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>web</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>com.karthik</groupId>
<artifactId>dao</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
.........
</dependencies>
當我在父pom的根路徑上運行mvn package命令時,將同時構建兩個模塊-web.war和dao.jar。 此方法確保始終將最新版本的dao.jar打包在web.war中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.