栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MAVEN添加依赖中控制各个阶段的打包行为标签的说明

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MAVEN添加依赖中控制各个阶段的打包行为标签的说明

1.项目中添加依赖(pom.xml)
    
    
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.projectlombok
            lombok
            provided
        
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.jupiter
                    junit-jupiter-engine
                
            
        
        
    

2.maven的dependency标签中有一个option标签,用来控制各个阶段的打包行为,其option有以下几个值:

①compile,缺省值,适用于所有阶段,会随着项目一起发布。

②provided,类似compile期望JDK,容器或使用者提供这个依赖。如servlet-api-2.3.jar,在发布到不同的容器时需替换掉。

③runtime,在运行时使用,如JDBC驱动,适用运行和测试阶段。   如热部署相关包。

④test ,只在测试时使用,用于编译和运行测试代码。不会随项目发布。如Junit-3.8.1.jar

⑤system, 类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

通俗的说:

1、test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖

2、compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去

3、provided依赖:在编译和测试的过程有效,最后生成war包时不会加入,诸如:servlet-api,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突 

4、runtime在运行的时候依赖,在编译的时候不依赖 

依赖的默认依赖范围是compile 

此外,对于公司内部开发的jar包,我们都加上true,这样可以避免引用这些jar的项目产生传递依赖。

如:项目mycom-csa中使用了mycom-cas-client-1.0.3.jar,然而mycom-cas-client-1.0.3.jar 又使用了mycom-common-security-1.0.3.jar。所以我们在对mycom-csa打包时会把mycom-common-security-1.0.3.jar打进package中。解决的最好方法是:可以通知开发mycom-cas-client-1.0.3.jar的同事在mycom-cas-client-1.0.3.jar的pom.xml中对dependency修改为:


      com.mycom
      mycom-common-security
      1.0.3-SNAPSHOT
      true

 添加true ,这样我们再打包时mycom-csa中就不会出现mycom-common-security-1.0.3.jar了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号