我有一个自定义库-dao.jar,其中包含数据库持久性逻辑。
我每次都会使用新版本将这个罐子推到文物上,如下所示:
mvn install:install-file -Dfile=C:*****targetDao.jar -DgroupId=non-public.com.karthik -DartifactId=dao -Dversion=2.0 -Dpackaging=jar
我还有另一个对此罐子依赖的Maven Web项目。此罐子还包装/捆绑在Maven WebApp项目/战争中。
<dependency>
<groupId>non-public.com.karthik</groupId>
<artifactId>dao</artifactId>
<version>2.0</version>
</dependency>
目前,我正在更改pom.xml&amp;每当dao.jar的新版本都可以在文物中使用时,重建Maven WebApp项目。
是否有任何选择可以使用最新版本的Dao.jar构建Maven项目,而无需手动更改pom.xml中的依赖项?
当Maven搜索依赖项时,它首先检查本地存储库(〜/.m2/repository )。如果找不到,它会尝试其他资源,例如在POM文件或设置文件中定义的远程存储库(〜/.m2/settings.xml )。
通过该逻辑,如果您尝试使用尚未安装到本地存储库的本地项目的版本,则Maven将永远无法在另一个项目中找到它。
避免一直更改版本号并手动构建两个项目。您可以为两个项目创建父型POM。然后,父母将能够认识到其中一个儿童项目取决于另一个项目,并以正确的顺序构建它们。
基于Luciano的输入,我创建了一个带有2个模块(Dao&amp; 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>
当我运行 mvn package 在父pom的root路径上命令时,两个模块 - web.war和dao.jar。此方法确保始终将DAO.JAR的最新版本包装在Web.war中。