首页 > 其他分享 >聚合工程的微服务之父pom配置

聚合工程的微服务之父pom配置

时间:2023-11-25 11:11:06浏览次数:36  
标签:dependencyManagement 聚合 spring maven pom 之父 import cloud

1、属性配置

    <!-- 属性配置 -->
    <properties>
        <!-- 关掉单元测试,否则在打包的时候会执行单元测试 -->
        <skipTests>true</skipTests>
        <!-- 项目构建时源码的编码方式 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- 报告输出文件的字符编码 -->
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- 编译时的编码; 否则在DOS下运行mvn compile命令时会出现莫名的错误,因为系统默认使用GBK编码,如果不在dos下执行mvn compile命令,可以不用配置-->
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <!-- 项目编译使用jdk版本,设置输入源码的jdk为 1.8 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <!-- 项目编译使用jdk版本,设置编译输出的字节码的jdk为 1.8 -->
        <maven.compiler.target>1.8</maven.compiler.target>
        <!-- SpringBoot 版本号 -->
        <spring-boot.version>2.7.13</spring-boot.version>
        <!-- spring-cloud 版本号 -->
        <spring-cloud.version>2021.0.8</spring-cloud.version>
        <!-- spring-cloud-alibaba 版本号 -->
        <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
    </properties>

2、依赖声明

 <!-- 依赖声明 -->
    <dependencyManagement>
        <dependencies>
            <!-- SpringCloud 微服务依赖 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <!-- <scope>import</scope> 和 <type>pom</type>作用:该pom中dependencyManagement就会包含导入的spring-cloud-dependencies中dependencyManagement里的所有dependency,为了解决pom类型的父工程Maven依赖单继承问题,可以导入其它工程pom中的dependencyManagement。-->
                <!-- 此依赖包的类型,默认为jar,这里改为pom,表示为Maven项目模块,即这个依赖不是一个可执行的Java应用程序或库,而是一个纯粹的Maven项目模块,它不会生成任何构建产物,只用于管理依赖关系。-->
                <type>pom</type>
                <!--此依赖包的使用范围,默认为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖,打包之时会打到包里去。-->
                <!--scope值为import:表示该依赖项只用于管理子模块的依赖关系,不会被子模块添加使用(不会被打到子模块包里去),避免不必要的依赖项被打包进去,减小打包文件的大小。主要作用就是导入其它工程pom中的dependencyManagement-->
                <!--import这个是maven2.0.9版本后出的属性,import只能在<dependencyManagement>下使用并且必须声明类型type为pom。-->
                <scope>import</scope>
            </dependency>
            <!-- SpringCloud Alibaba 微服务依赖 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- SpringBoot 依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- hutool工具包-->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.8.23</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

type值有jar、war、pom 3种,默认为jar,对应pom.xml文件中的packaging,将Maven项目的packing元素设为pom,表示这个项目不是一个可执行的Java应用程序或库,而是一个纯粹的Maven项目模块,它不会生成任何构建产物,只用于管理依赖关系。

scope代表依赖包的使用范围,默认为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖,打包之时会打到包里去。import 这个是maven2.0.9版本后出的属性,import只能在dependencyManagement中使用,能解决maven依赖单继承问题,import依赖关系实际上并不参与限制依赖关系的传递性。

当一个父pom中的 dependencyManagement 标签中需要导入另一个工程pom中的dependencyManagement的时候,必须同时使用<scope>import</scope> 和 <type>pom</type>

注意: dependencyManagement只在父工程(即pom类型的maven工程)中声明,这样在子工程中定义无需声明版本从而生效。如果在jar类型的maven工程中添加了dependencyManagement,是没有意义的。

好处: 当我们需要引入很多 jar 包的时候,会导致 pom.xml 文件过大,这个时候我们引进来一个 type 为 pom 的dependency,意味着我们可以将所有的 jar 包打包成一个 pom类型的dependency,然后我们依赖了该dependency,即可以下载下来该dependency下的所有依赖的 jar 包。

3、依赖管理

 <!-- 依赖管理 -->
    <dependencies>
        <!-- bootstrap 启动器,在SpringBoot 2.4.x的版本之后,对于bootstrap.properties或者bootstrap.yaml配置文件(我们合起来成为Bootstrap配置文件)的支持,需要导入如下的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
    </dependencies>

4、build配置

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring-boot.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <!-- 在原始Maven打包形成的jar包基础上,进行重新打包,新形成的jar包不但包含应用类文件和配置文件,而且还会包含应用所依赖的jar包以及Springboot启动相关类(loader等),防止有些文件打包不进去。-->
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

5、在当前项目中配置使用独立的Maven远程仓库

<!-- repositories:远程仓库,用于配置当前项目下载依赖的Maven远程仓库地址,希望在当前项目中使用独立的Maven远程仓库 ,只对当前Maven项目有效。
-->
    <repositories>
        <repository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <!-- 告诉Maven可以从这个仓库下载releases版本的构件 -->
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
    <!-- pluginRepositories:插件仓库,用于配置当前项目所用插件的远程仓库地址,针对的是maven命令需要的插件(比如clean、install)-->
    <pluginRepositories>
        <pluginRepository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <!-- 告诉Maven不要从这个仓库下载snapshot版本的构件,禁止从公共仓库下载snapshot构件是推荐的做法,因为这些构件不稳定,且不受你控制,你应该避免使用。当然,如果你想使用局域网内组织内部的仓库,你可以激活snapshot的支持 -->
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

标签:dependencyManagement,聚合,spring,maven,pom,之父,import,cloud
From: https://www.cnblogs.com/shigzh/p/17855318.html

相关文章

  • Java 反射+递归 实现数据聚合发布的配置化
    大致是GraphQL的思路分开配置接口数据结构和数据实体的元数据支持列表查询,支持多层级的数据聚合参数选叶子节点就行,后续可以把参数用JS实现一个选择树状结构的UI,生成出查询字符串来,或者按照字段分配权限给租户异常处理的不太好,有待继续调试不支持数据权限,只支持根据聚合根向......
  • [SpringBoot][Maven]关于maven pom文件的packaging属性
    关于mavenpom文件的packaging属性前几天在调试源码运行程序的时候,因为将项目中pom文件的packaging属性用错导致源码包无法引入使用而报Bean注入错误,在此进行总结整理记录。packaging是maven的pom.xml中的一个标签,用于指定maven项目的输出格式,也就是打包类型,使用方式为:<packagi......
  • UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
    UML类图关系(泛化、继承、实现、依赖、关联、聚合、组合)1.继承继承是指一个类(称为子类、子接口)继承令一个类(称为父类、付接口)的功能子类具有可以增加它自己的新功能的能力在Java中此类关系通过关键字extends明确标志且子类只能继承一个父类,单继承包括类继承和接口继承两......
  • 09-基础SQL-DQL(数据查询语言)-聚合函数(count、max、min、avg、sum)
    DQL-介绍(常用)DQL英文全称是DataQueryLanguage(数据查询语言),数据查询语言用来查询数据库中表的记录查询关键字:SELECTDQL-语法......
  • TSN流量记录器:验证汽车网络中的以太网聚合,经济高效的解决方案
     在未来几年,汽车线束将从不同协议的异质网络转变为分层的同质以太网网络。在这种新情况下,模拟真实车辆网络的实验室测试台需要分析工具,以支持它们在车内通信过程中进行验证。汽车向以太网聚合原因随着汽车内部技术变得越来越复杂,相互间的联系变得越来越紧密,最新的应用程序和......
  • 记录一次 maven 子模块相互依赖导致的父模块无法动态升级的问题 'parent.relativePath
        项目里面使用的commons公共模块,每次更改后之前都不会升级其版本号,导致当commons改动后,其他服务在不知道的情况下,会出现文件缺失。由于之前commons下面有12个公共子模块,所以之前一直没有升级commons模块。为了方便,于是决定每次更改commons模块后让所有的子项目都跟着升......
  • 一键搜索,海量商品任你选!多平台聚合,购物更便捷
    对于多平台聚合搜索,根据关键词取商品列表,您需要使用第三方服务或软件来实现。以下是一些可能的选择:使用第三方聚合搜索工具:有些第三方工具可以聚合多个电商平台的商品数据,并提供统一的搜索接口。您可以使用这些工具提供的API接口,通过关键词搜索商品列表。请注意,不同工具的API接口和......
  • es笔记七之聚合操作之桶聚合和矩阵聚合
    本文首发于公众号:Hunter后端原文链接:es笔记七之聚合操作之桶聚合和矩阵聚合桶(bucket)聚合并不像指标(metric)聚合一样在字段上计算,而是会创建数据的桶,我们可以理解为分组,根据某个字段进行分组,将符合条件的数据分到同一个组里。桶聚合可以有子聚合,意思就是在分组之后,可以在每......
  • 多表查询(跨表查询) 子查询 链表查询 正反向查询概念 聚合查询 分组查询 F查询和Q查询
    昨日内容回顾模板之变量所有的数据类型都可以在模板中使用render(request,'index.html',context={''})render(request,'index.html',context=locals())"""在模板中使用变量的时候,用的是字典的key值,key值value值一般保持一致"""模板之过滤器类似于函数,函数才可以传递参......
  • 收银系统源码收银系统OEM定制开发(收银POS+线上商城+ERP+营销插件+聚合支付)
    源码:零售行业线下线上一体化收银系统1.开发语言核心开发语言: php、HTML5、JavaPHP开发环境:php7.3安卓端收银、助手: 原生的JavaPC收银端: HTML5、vue+css+js+nwjs微信小程序助手: 原生小程序开发商城: uniapp后合管理: HTML5+vue+element-ui+css+js2.适用行业适用于泛零售行......