美文网首页
maven的聚合和继承

maven的聚合和继承

作者: 不知名的蛋挞 | 来源:发表于2018-09-26 10:00 被阅读29次

    maven的聚合

    有三个项目,我们分了三个模块编译:user-core user-log user-service给我们带来最大的问题就是得一个一个地编译,要是很多个模块那样更麻烦,效率很低。那怎么办呢?

    我们可以在三个模块的根目录中创建pom.xml文件,通过这个文件集中编译里面的项目。这个Pom.xml不用写任何东西,就是用来做聚合操作的。

    在eclipse的环境中显然没有办法把这个pom.xml放进去,所以我们可以建一个maven项目。步骤如下:

    (1)创建一个简单的项目

    跳过archetyoe selection,注意下面packaging

    也可以在生成的pom文件中改:

    <packaing>pom</packaing>
    

    (2)修改pom.xml

    在这个项目中我们只用改pom.xml的文件。目录结构如下:

    |-- pom.xml
    |-- module-a
        `-- pom.xml
    |-- module-b
        `-- pom.xml
    |-- module-c
        `-- pom.xml
    |-- foo-all
        `-- pom.xml
    

    那我们就在pom.xml文件中导入三个项目模块:

    (3)把user-core user-log user-service三个项目的target排除掉,因为target是编译后的文件夹 ,无需进行提交。

    maven的继承

    在各个模块中的pom文件中存在着大量的重复,如何解决呢?我们可以让所有的项目继承于一个根类,在根类里面配置。

    (1)创建根类项目

    (2)在这个项目中,我们把三个项目共同有的东西全部拷贝进根项目的pom.xml,并用<dependencyManagement>进行依赖管理。

    maven提供的dependencyManagement元素能让子模块继承到父模块的依赖配置,有能保证子模块的灵活性。dependencyManagement元素下的依赖声明不会引入实际的依赖,能约束dependencies下的依赖使用。如果子项目中不声明经过父项目dependencyManagement修饰的依赖,那么子项目就不会引入该依赖。

    子项目如果要声明父项目中经过dependencyManagement修饰的依赖,只需要定义groupId和artifactId即可。

    由于有了依赖管理的类,在模块类里面就不用配置版本version、作用域scope等信息,会自动在父类里面找。我们的版本统一在依赖管理中管理了。

    (3)可以把公用的东西放在properties中,比如下图中,所有项目的junit版本号都是3.8.1,所有项目字符编码都是UTF-8,就可以放在properties中,然后用类似于EL表达式的表达式获取版本号。

    (4)因为main目录和test目录对父的pom没什么作用,所以可以删除。

    (5)然后把项目重复的东西全部删掉,在每个模块中然后加入parent标签,比如在user-service中:

    一定要注意继承的绝对路径是在pom文件!

    (6)我们可以把继承和聚合放在同一个类里面

    相关文章

      网友评论

          本文标题:maven的聚合和继承

          本文链接:https://www.haomeiwen.com/subject/hutdoftx.html