SpringBoot pom中 dependency重点属性 scop 和exclusions使用

我们往往会因为boot项目打包依赖而烦恼,有一些包我们上线不需要但是还是打包的时候加入到了项目中有,导致项目非常的臃肿,甚至导致项目瘫痪启动失败。我这边就通过这两个pom dependency 常用的两个属性进行处理;

一、scop 属性

   

 1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。

  2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit。

  3.runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段。

  4.provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作。

   5.system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径。

通过以上详细介绍我们来引入实际开发中涉及的场景

  例如 咱们常用的 spring-boot-starter-tomcat 包这个包我们只在本地开发时进行使用

	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
	</dependency>
   	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
	</dependency>

二、exclusions

  排除依赖传递多余的依赖包,其实现在好多springboot 虽然整合了很多包插件,但是有的插件并不是我们需要的,我们想要把这包剔除或者更改版本那么我们就用到了exclusions这个属性,例如我们常用的排除springboot 自带的log日志插件,因为近期log4j 出了很多问题好多同学都是用的springboot 自带的log日志插件,导致log4j 版本没办法升级,或者没有用导致或者之前用了,但是现在打包还是会存在该包,我们就用到了这个属性

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

这里就正确的排除了springboot 包中的logging 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Maven 的 POM 文件,`<dependency>` 和 `<plugin>` 元素都使用 `groupId` 来指定依赖项或插件的组织或团队。尽管它们都使用相同的属性名称,但在 `<dependency>` 和 `<plugin>` 的 `groupId` 具有不同的含义和作用。 - `<dependency>` 的 `groupId`:在 `<dependency>` 元素,`groupId` 用于指定所需依赖项的组织或项目的唯一标识符。它帮助 Maven 在远程仓库准确定位和下载正确的依赖项。通常,`groupId` 反映了依赖项的创建者或项目的名称。 示例: ```xml <dependency> <groupId>com.example</groupId> <artifactId>my-library</artifactId> <version>1.0.0</version> </dependency> ``` 在上面的示例,`groupId` 是 `com.example`,用于唯一标识 `my-library` 项目。 - `<plugin>` 的 `groupId`:在 `<plugin>` 元素,`groupId` 用于指定要使用的 Maven 插件的组织或团队。Maven 插件是扩展 Maven 构建过程的工具,用于执行特定的任务或目标。`groupId` 帮助 Maven 知道从哪个仓库获取正确的插件,并将其应用于构建过程。 示例: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> </plugin> </plugins> </build> ``` 在上面的示例,`groupId` 是 `org.apache.maven.plugins`,用于标识 Maven 编译器插件。 总结起来,`<dependency>` 的 `groupId` 用于标识依赖项的创建者或项目,而 `<plugin>` 的 `groupId` 用于标识要使用的 Maven 插件的来源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值