您当前的位置: 首页 >  微服务

杨林伟

暂无认证

  • 3浏览

    0关注

    3337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

微服务轮子项目(54) - 项目根节点

杨林伟 发布时间:2021-03-03 14:26:02 ,浏览量:3

1. 引言

备注:本文的代码都提交到了码云,有兴趣的童鞋可以clone参阅,地址:https://gitee.com/19931024/microservice-framework

本文目录结构:

|_ _ 1.引言 |_ _ _ _ _ 2.项目根节点 |_ _ _ _ _ _ _ 2.1 基础配置 |_ _ _ _ _ _ _ _ _ 2.1.1 packaging方式 |_ _ _ _ _ _ _ 2.2 properties配置 |_ _ _ _ _ _ _ 2.3 dependency配置 |_ _ _ _ _ _ _ 2.4 build配置 |_ _ _ _ _ _ _ 2.5 repositories配置 |_ _ _ _ _ _ _ 2.6 distributionManagement配置 |_ _ _ _ _ _ _ 2.7 developers配置

《轮子项目》前面前53篇文章都是描写理论的,本文回归本质,从代码开始讲起。

基本所有Java后台的项目都是使用Maven来构建的,本文主要讲解《轮子项目》的根节点管理。

2. 项目根节点

先贴上项目根节点的pom内容:



    4.0.0
    com.ylw
    central-parent
    1.0.0
    pom

    
        1.8
        1.8
        UTF-8
        8
        2.2.5.RELEASE
        2.3.8.RELEASE
        Hoxton.SR9
        4.4
        2.9.2
        1.8.7
        1.0.6
        2.0.1
        0.9.1
        1.1.22
        1.14
        3.1.0
        2.3.8.RELEASE
        1.1.0.RELEASE
        3.14.1
        1.6.2
        5.1.4
        3.4.0
        3.8.1
        7.2.28
        4.1.3
        4.1.1
        2.3.1
        1.7
        2.7
        5.0.2.RELEASE
        1.27.2
        1.21
        2.12.0
        1.0.2
        1.9.4
        1.1.6.RELEASE
        2.6
        4.0.1
        4.1.3
        7.10.2
        2.0.5
        6.2.0.Final
        2.7.8
        1.2.2
        ylw-job/**/*, ylw-register/**/*, ylw-web/**/*
        openjdk:8-jre-alpine
        /tmp
        hub.ylw.com:8080/microservices-platform
        -Djava.security.egd=file:/dev/./urandom
        -Xms128m -Xmx128m
    

    
        
            
            
                com.alibaba
                druid-spring-boot-starter
                ${druid-starter}
            
            
            
                com.baomidou
                mybatis-plus-boot-starter
                ${mybatis-plus-boot-starter.version}
            
            
                com.baomidou
                mybatis-plus-extension
                ${mybatis-plus-boot-starter.version}
            
            
                com.baomidou
                mybatis-plus
                ${mybatis-plus-boot-starter.version}
            
            
            
                org.springframework.security.oauth
                spring-security-oauth2
                ${security-oauth2.version}
            
            
                org.springframework.security
                spring-security-jwt
                ${security-jwt.version}
            
            
            
                org.redisson
                redisson-spring-boot-starter
                ${redisson-starter.version}
            
            
            
                com.github.zlt2000
                swagger-butler-core
                ${swagger.butler.version}
            
            
            
                com.github.whvcse
                easy-captcha
                ${easyCaptcha.version}
            
            
            
                cn.hutool
                hutool-all
                ${hutool.version}
            
            
                com.aliyun.oss
                aliyun-sdk-oss
                ${aliyun-sdk-oss}
            
            
            
                com.qiniu
                qiniu-java-sdk
                ${qiniu-java-sdk}
            
            
                org.apache.poi
                poi
                ${poi.version}
            
            
                org.apache.poi
                poi-ooxml
                ${poi.version}
            
            
            
                cn.afterturn
                easypoi-base
                ${easypoi.version}
            
            
                de.codecentric
                spring-boot-admin-starter-server
                ${spring-boot-admin.version}
            
            
                org.apache.velocity
                velocity
                ${velocity.version}
            
            
                org.apache.commons
                commons-configuration2
                ${commons-configuration2.version}
            
            
                com.codingapi.txlcn
                txlcn-tm
                ${txlcn.version}
            
            
                com.codingapi.txlcn
                txlcn-tc
                ${txlcn.version}
            
            
                com.codingapi.txlcn
                txlcn-txmsg-netty
                ${txlcn.version}
            
            
                io.shardingsphere
                sharding-jdbc-spring-boot-starter
                ${sharding-sphere.version}
            
            
                com.github.tobato
                fastdfs-client
                ${fastdfs-client.version}
            
            
                eu.bitwalker
                UserAgentUtils
                ${userAgent.version}
            
            
                com.alibaba
                transmittable-thread-local
                ${transmittable.version}
            
            
                com.nepxion
                banner
                ${banner.version}
            
            
                org.springframework.social
                spring-social-security
                ${spring-social-security.version}
            
            
                commons-io
                commons-io
                ${commons-io.version}
            
            
                javax.servlet
                javax.servlet-api
                ${servlet-api.version}
            
            
                org.springframework.data
                spring-data-elasticsearch
                ${spring-data-elasticsearch.version}
            
            
                org.elasticsearch.client
                elasticsearch-rest-high-level-client
                ${elasticsearch.version}
            
            
                org.elasticsearch.client
                elasticsearch-rest-client
                ${elasticsearch.version}
            
            
                org.elasticsearch
                elasticsearch
                ${elasticsearch.version}
            
            
                com.github.xiaoymin
                knife4j-spring-boot-starter
                ${knife4j.version}
            
            
                com.github.xiaoymin
                knife4j-micro-spring-boot-starter
                ${knife4j.version}
            
            
                org.hibernate
                hibernate-validator
                ${hibernate-validator.version}
            
            
                org.apache.dubbo
                dubbo
                ${dubbo.version}
            

            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot-dependencies.version}
                pom
                import
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud-dependencies.version}
                pom
                import
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba-dependencies.version}
                pom
                import
            
        
    

    
        
            org.apache.commons
            commons-lang3
        
        
            org.apache.commons
            commons-collections4
            ${commons-collections4.version}
        
        
            commons-beanutils
            commons-beanutils
            ${commons-beanutils.version}
        
        
            org.projectlombok
            lombok
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                    ${spring-boot-dependencies.version}
                
                
                    com.spotify
                    docker-maven-plugin
                    ${docker-maven-plugin.version}
                
            
        
    


    
        
            aliyun-repos
            https://maven.aliyun.com/repository/public
            
                false
            
        
    

    
        
            releases
            releases Repository
            http://192.168.28.138:8081/repository/maven-releases/
        

        
            snapshots
            http://192.168.28.138:8081/repository/maven-snapshots/
            true
        
    

    
        
            LinWei YangLinwei
            https://gitee.com/19931024/microservice-framework
            https://yanglinwei.blog.csdn.net/
        
    


很多内容对吧!我上面的一串可以不看,我把代码折叠后,如下图: 在这里插入图片描述

主要分为如下几块:

  • 根节点的版本、描述、id、组织id定义
  • properties版本号统一管理
  • dependencyManagement依赖管理
  • dependencies 公用依赖管理
  • build
  • repositories
  • distributionManagement
  • developers

下面来详解。

2.1 基础配置

在这里插入图片描述

解析:

  • modelVersion:指定了当前POM模型的版本,对于Maven2Maven 3来说,它只能是4.0.0
  • groupId:项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构;
  • artifactId:就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称;
  • description:描述
  • version:版本号
  • packaging:分为pomjarwar下面继续讲解
2.1.1 packaging方式

packaging默认是jar类型,有几种打包方式:

  • pom:父类型都为pom类型
  • jar:内部调用或者是作服务使用
  • war:需要部署的项目
2.2 properties配置

在这里插入图片描述

通过properties元素用户可以自定义一个或多个Maven属性,然后在POM的其它地方使用**${属性名}**的方式引用该属性。

这种做法的最大意义在于消除重复和统一管理。

2.3 dependency配置 dependencyManagementdependencies在这里插入图片描述在这里插入图片描述

描述:

  • dependencyManagement:dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且versionscope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。
  • dependencies:即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
2.4 build配置

在这里插入图片描述 和前面说的dependenciesdependencyManagement 的区别是非常类似的

描述:

  • plugins:plugins 下的 plugin 是真实使用的
  • pluginManagement :pluginManagement 下的 plugins 下的plugin则仅仅是一种声明,子项目中可以对pluginManagement 下的 plugin 进行信息的选择、继承、覆盖等。
2.5 repositories配置

在这里插入图片描述 描述:

  • repositories标签的作用是用来配置maven项目的远程仓库;
  • 可以在repositories下面添加多个repository
  • 每个repository都有它唯一的ID,一个描述性的name,以及最重要的,远程仓库的url
  • true告诉Maven可以从这个仓库下载releases版本的构件,而false告诉Maven不要从这个仓库下载snapshot版本的构件(禁止从公共仓库下载snapshot构件是推荐的做法,因为这些构件不稳定,且不受你控制,你应该避免使用。当然,如果你想使用局域网内组织内部的仓库,你可以激活snapshot的支持)。
2.6 distributionManagement配置

在这里插入图片描述 描述:

  • mvn install 会将项目生成的构件安装到本地Maven仓库;
  • mvn deploy 用来将项目生成的构件分发到远程Maven仓库;
  • distributionManagement的作用是来指定Maven分发构件的位置。
  • snapshot为开发过程中的版本,实时,但不稳定,release版本则比较稳定
  • Maven会根据你项目的版本来判断将构件分发到哪个仓库
2.7 developers配置

在这里插入图片描述 描述:用来声明一些开发者的信息

关注
打赏
1662376985
查看更多评论
立即登录/注册

微信扫码登录

0.2390s