如何在Maven Web项目中捆绑/包装最新版本的自定义库,而无需更新pom.xml



我有一个自定义库-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中。

最新更新