zoukankan      html  css  js  c++  java
  • springboot~nexus项目打包要注意的地方

    一个使用maven制作框架包时,会有一个主项目,然后它有多个子项目框架组成,很少一个工具包一个工程,像springboot,springcloud都是这种结构,主项目用来管理一些依赖包的版本,这对于框架型项目来说是很必要的,而对于业务项目来说,因为目前都是推荐使用微服务的轻量方式,所以不建议用多项目绑定一个大项目的方式,而都是一个服务一个项目。
    架构图

    主pom文件

    主项目的pom文件用来管理依赖包版本,一般在dependencyManagement节点去声明它们的版本号,这样在子项目里可以不声明相同包的版本信息了

       <dependencyManagement>
            <dependencies>
                <!--spring boot 版本-->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>${spring-boot-dependencies.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <!--阿里巴巴组件-->
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${spring-cloud-alibaba-dependencies.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <!--spring cloud 版本-->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <!-- Spring Boot Web 依赖 -->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                    <version>${spring-boot-dependencies.version}</version>
                    <exclusions>
                        <!-- 排除Tomcat 以使用 Undertow -->
                        <exclusion>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-starter-tomcat</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
    
    
                <!-- Google 编码助手 -->
                <dependency>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                    <version>${guava.version}</version>
                </dependency>
    
    
                <!-- Mysql 驱动 -->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql.drive.version}</version>
                </dependency>
    
    
                <!-- HikariCP 连接池 -->
                <dependency>
                    <groupId>com.zaxxer</groupId>
                    <artifactId>HikariCP</artifactId>
                    <version>${HikariCP.version}</version>
                </dependency>
    
                <!-- MyBatis 增强工具 -->
                <dependency>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-boot-starter</artifactId>
                    <version>${mybatis-plus-boot-starter.version}</version>
                </dependency>
    
    
                <!-- Alibaba json解析器 -->
                <dependency>
                    <groupId>com.alibaba</groupId>
                    <artifactId>fastjson</artifactId>
                    <version>${fastjson.version}</version>
                </dependency>
    
    
                <!-- 接口文档 -->
                <dependency>
                    <groupId>io.springfox</groupId>
                    <artifactId>springfox-swagger2</artifactId>
                    <version>${springfox-swagger2.version}</version>
                </dependency>
    
    
                <!-- 接口文档 UI -->
                <dependency>
                    <groupId>io.springfox</groupId>
                    <artifactId>springfox-swagger-ui</artifactId>
                    <version>${springfox-swagger2.version}</version>
                </dependency>
    
                <!-- HTTP 客户端请求 -->
                <dependency>
                    <groupId>org.apache.httpcomponents</groupId>
                    <artifactId>httpclient</artifactId>
                    <version>${httpclient.version}</version>
                </dependency>
    
    
                <!-- Feign 客户端请求 -->
                <dependency>
                    <groupId>io.github.openfeign</groupId>
                    <artifactId>feign-httpclient</artifactId>
                    <version>${feign-httpclient.version}</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    

    如果项目希望进行发布到nexus私服上,需要配置distributionManagement节点的信息,它对应你的.m2/settings.xml里的profile节点信息

            <distributionManagement>
            <repository>
                <id>releases</id>
                <name>Nexus Release Repository</name>
                <url>http://192.168.0.203:8081/repository/maven-releases/</url>
            </repository>
            <snapshotRepository>
                <id>snapshots</id>
                <name>Nexus Snapshot Repository</name>
                <url>http://192.168.0.203:8081/repository/maven-snapshots/</url>
            </snapshotRepository>
    

    拉取nexus的类库

    如果希望拉取nexus的类库,可以将settings.xml文件里添加profile节点,并激活它

        <profiles>
            <profile>
                <!--profile的id-->
                <id>dev</id>
                <repositories>
                    <repository>
                        <!--仓库id,repositories可以配置多个仓库,保证id不重复-->
                        <id>maven-public</id>
                        <url>http://192.168.0.203:8081/repository/maven-public/</url>
                        <!--是否下载releases构件-->
                        <releases>
                            <enabled>true</enabled>
                        </releases>
                        <!--是否下载snapshots构件-->
                        <snapshots>
                            <enabled>true</enabled>
                        </snapshots>
                    </repository>
                </repositories>
                <pluginRepositories>
                    <pluginRepository>
                        <id>maven-public</id>
                        <name>maven-plugin</name>
                        <url>http://192.168.0.203:8081/repository/maven-public/</url>
                        <releases>
                            <enabled>true</enabled>
                        </releases>
                        <snapshots>
                            <enabled>true</enabled>
                        </snapshots>
                    </pluginRepository>
                </pluginRepositories>
            </profile>
    
        </profiles>
    
        <activeProfiles>
            <activeProfile>dev</activeProfile>
        </activeProfiles>
    

    使用deploy发布项目

    第一次把工具包发到nexus时,需要在点击主项目的 deploy它会把主项目和其子项目同时发到nexus上面,后续可以只deploy修改的项目
    发布

    在具体项目里使用它

    直接在项目的pom里,添加对应的工具包即可,工具包的项目依赖你不需要关心

       <dependency>
                <groupId>com.lind</groupId>
                <artifactId>lind-common</artifactId>
                <version>${lind-common.version}</version>
      </dependency>
    

    注意:对于框架型项目,需要保存你的工具包依赖的项目也在nexus上面,否则会导致加载失败。

  • 相关阅读:
    电脑性能提升三
    电脑实用小技巧
    自定义windows开机声音
    电脑性能提升一
    rpm和yum软件管理
    Linux网络技术管理及进程管理
    RAID磁盘阵列及CentOS7系统启动流程
    Linux磁盘管理及LVM讲解
    Linux计划任务及压缩归档
    Android Studio 常用快捷键及常用设置
  • 原文地址:https://www.cnblogs.com/lori/p/13354675.html
Copyright © 2011-2022 走看看