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上面,否則會導致加載失敗。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM