- 浏览: 592030 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (819)
- java开发 (110)
- 数据库 (56)
- javascript (30)
- 生活、哲理 (17)
- jquery (36)
- 杂谈 (15)
- linux (62)
- spring (52)
- kafka (11)
- http协议 (22)
- 架构 (18)
- ZooKeeper (18)
- eclipse (13)
- ngork (2)
- dubbo框架 (6)
- Mybatis (9)
- 缓存 (28)
- maven (20)
- MongoDB (3)
- 设计模式 (3)
- shiro (10)
- taokeeper (1)
- 锁和多线程 (3)
- Tomcat7集群 (12)
- Nginx (34)
- nodejs (1)
- MDC (1)
- Netty (7)
- solr (15)
- JSON (8)
- rabbitmq (32)
- disconf (7)
- PowerDesigne (0)
- Spring Boot (31)
- 日志系统 (6)
- erlang (2)
- Swagger (3)
- 测试工具 (3)
- docker (17)
- ELK (2)
- TCC分布式事务 (2)
- marathon (12)
- phpMyAdmin (12)
- git (3)
- Atomix (1)
- Calico (1)
- Lua (7)
- 泛解析 (2)
- OpenResty (2)
- spring mvc (19)
- 前端 (3)
- spring cloud (15)
- Netflix (1)
- zipkin (3)
- JVM 内存模型 (5)
- websocket (1)
- Eureka (4)
- apollo (2)
- idea (2)
- go (1)
- 业务 (0)
- idea开发工具 (1)
最新评论
-
sichunli_030:
对于频繁调用的话,建议采用连接池机制
配置TOMCAT及httpClient的keepalive以高效利用长连接 -
11想念99不见:
你好,我看不太懂。假如我的项目中会频繁调用rest接口,是要用 ...
配置TOMCAT及httpClient的keepalive以高效利用长连接
问题再现:
上次这边朋友问我一个问题,就是他们在pom.xml中的dependency中,看到有一些是<scope>provided</scope>的情况,比如如下:
他们问我scope在何种情况下要设置为provided,以及和scope设置为compile的区别。
解释:
其实这个问题很简单。
对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artifact对应的jar包在classpath中。
而对于scope=provided的情况,则可以认为这个provided是目标容器已经provide这个artifact。换句话说,它只影响到编译,测试阶段。在编译测试阶段,我们需要这个artifact对应的jar包在classpath中,而在运行阶段,假定目标的容器(比如我们这里的liferay容器)已经提供了这个jar包,所以无需我们这个artifact对应的jar包了。
听起来很玄乎,对吧,其实一点也不难理解。举个scope=provided的例子。
比如说,假定我们自己的项目ProjectABC 中有一个类叫C1,而这个C1中会import这个portal-impl的artifact中的类B1,那么在编译阶段,我们肯定需要这个B1,否则C1通不过编译,因为我们的scope设置为provided了,所以编译阶段起作用,所以C1正确的通过了编译。测试阶段类似,故忽略。
那么最后我们要吧ProjectABC部署到Liferay服务器上了,这时候,我们到$liferay-tomcat-home\webapps\ROOT\WEB-INF\lib下发现,里面已经有了一个portal-impl.jar了,换句话说,容器已经提供了这个artifact对应的jar,所以,我们在运行阶段,这个C1类直接可以用容器提供的portal-impl.jar中的B1类,而不会出任何问题。
实际插件的行为:
刚才我们讲述的是理论部分,现在我们看下,实际插件在运行时候,是如何来区别对待scope=compile和scope=provided的情况的。
做一个实验就可以很容易发现,当我们用maven install生成最终的构件包ProjectABC.war后,在其下的WEB-INF/lib中,会包含我们被标注为scope=compile的构件的jar包,而不会包含我们被标注为scope=provided的构件的jar包。这也避免了此类构件当部署到目标容器后产生包依赖冲突。
参考:http://supercharles888.blog.51cto.com/609344/981316/
上次这边朋友问我一个问题,就是他们在pom.xml中的dependency中,看到有一些是<scope>provided</scope>的情况,比如如下:
<dependency> <groupId>com.liferay.portal</groupId> <artifactId>portal-impl</artifactId> <version>6.1.0</version> <scope>provided</scope> </dependency>
他们问我scope在何种情况下要设置为provided,以及和scope设置为compile的区别。
解释:
其实这个问题很简单。
对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artifact对应的jar包在classpath中。
而对于scope=provided的情况,则可以认为这个provided是目标容器已经provide这个artifact。换句话说,它只影响到编译,测试阶段。在编译测试阶段,我们需要这个artifact对应的jar包在classpath中,而在运行阶段,假定目标的容器(比如我们这里的liferay容器)已经提供了这个jar包,所以无需我们这个artifact对应的jar包了。
听起来很玄乎,对吧,其实一点也不难理解。举个scope=provided的例子。
比如说,假定我们自己的项目ProjectABC 中有一个类叫C1,而这个C1中会import这个portal-impl的artifact中的类B1,那么在编译阶段,我们肯定需要这个B1,否则C1通不过编译,因为我们的scope设置为provided了,所以编译阶段起作用,所以C1正确的通过了编译。测试阶段类似,故忽略。
那么最后我们要吧ProjectABC部署到Liferay服务器上了,这时候,我们到$liferay-tomcat-home\webapps\ROOT\WEB-INF\lib下发现,里面已经有了一个portal-impl.jar了,换句话说,容器已经提供了这个artifact对应的jar,所以,我们在运行阶段,这个C1类直接可以用容器提供的portal-impl.jar中的B1类,而不会出任何问题。
实际插件的行为:
刚才我们讲述的是理论部分,现在我们看下,实际插件在运行时候,是如何来区别对待scope=compile和scope=provided的情况的。
做一个实验就可以很容易发现,当我们用maven install生成最终的构件包ProjectABC.war后,在其下的WEB-INF/lib中,会包含我们被标注为scope=compile的构件的jar包,而不会包含我们被标注为scope=provided的构件的jar包。这也避免了此类构件当部署到目标容器后产生包依赖冲突。
参考:http://supercharles888.blog.51cto.com/609344/981316/
发表评论
-
SpringBoot创建maven多模块项目实战代码
2022-05-10 10:49 120SpringBoot创建maven多模块项目实战代码 -
Maven依赖分析,jar包冲突解决利器intellij idea插件Maven Helper强烈建议安装
2021-09-10 13:49 259Maven Helper插件 maven scope pro ... -
dependencies与dependencyManagement的区别
2017-12-13 18:52 473dependencies与dependencyManageme ... -
Eclipse m2e pom报错:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache
2017-05-08 17:35 1442Eclipse Maven pom报错: org.apache ... -
Linux下搭建maven私服nexus3.x
2017-04-16 14:06 524http://blog.csdn.net/sinat_3401 ... -
maven-deploy失败
2017-02-20 14:59 1329昨天遇到的问题,mavne项目执行deploy的时候,出错。提 ... -
使用maven插件对java工程进行打包
2016-12-22 14:28 323参考: http://chenzhou123520.iteye ... -
maven-shade-plugin
2016-12-22 11:26 588使用插件maven-shade-plugin,非常好用 使用插 ... -
Maven最佳实践-distributionManagement
2016-10-27 16:45 1977分发构件至远程仓库 mvn ... -
maven deploy到nexus报错:Return code is: 401, ReasonPhrase:Unauthorized
2016-10-27 16:34 1692eclipse中使用clean deploy 命令,将本地文件 ... -
将本地文件推送到nexus中心库
2016-10-25 17:02 415http://blog.csdn.net/aline200/a ... -
MAVEN 工程打包resources目录外的更多资源文件
2016-10-25 14:36 425参考:http://blog.csdn.net/u012849 ... -
解决Maven工程中报 Missing artifact jdk.tools:jdk.tools
2016-09-26 10:22 557jdk.tools:jdk.tools是与JDK一起分发的一个 ... -
target\m2e-wtp\web-resources\META-INF\MANIFEST.MF (系统找不到指定的路径)
2016-09-12 09:12 1741业务需求:在清除了本地仓库之后又重新拷贝了一下报错:H:\ta ... -
解决Maven报Plugin execution not covered by lifecycle configuration
2016-09-08 10:02 558参考:http://blog.csdn.net/xxd8511 ... -
web.xml is missing and <failOnMissingWebXml> is set to true
2016-09-06 19:02 724在学习maven模块化构建项目的时候遇到了如下报错信息: w ... -
使用Nexus搭建Maven私服
2016-07-17 17:13 339为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给 ... -
maven--私服的搭建
2016-07-17 16:58 992maven--私服的搭建(Nexus的使用)和注意的问题 私 ... -
maven exclusions【jar包依赖注意】
2016-05-20 15:24 850<dependency> & ...
相关推荐
If you are working with Java or Java EE projects and you want to take advantage of Maven dependency management, then this book is ideal for you. This book is also particularly useful if you are a ...
主要介绍了maven依赖关系中的<scope>provided</scope>使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Maven中scope详细说明 依赖范围控制哪些依赖在哪些classpath 中可用,哪些依赖包含在一个应用中。
maven-dependency-analyzer-1.1.jar
我们在IDEA的安装目录下找到 /plugins/maven/lib/maven2/conf 或者 /plugins/maven/lib/maven3/conf目录(如果两个都有建议都改掉),向其中的setting.xnl文件中的/标签下添加如下的仓库地址(这里以阿里云为例): ...
SpringMvc Spring Mybatis Maven 注解方式
maven-dependency-plugin-2.8.jar
maven-cobertura-checker.zip,标准的cobertura maven插件处理cobertura类,而不是阈值的xml报告
Maven Dependency Helper安装Settings -> Plugins -> Marketplace, 搜索"Maven Dependency Helper"Settings -> Plugins -> Install plugin from disk快捷键Ctrl+Shift+D演示查询某一个依赖的版本信息通过搜索框搜索...
maven-dependency-tree-1.2.jar
NULL 博文链接:https://dannyhz.iteye.com/blog/2249427
maven-dependency-plugin-2.1.jar
mvn install:install-file: maven 安装命令 -D groupId : 包名(在repository里面会建立一个如org/zenika/widget方件夹) -D artivactId: artifact 写你的jar名称 -D version:版本号名称 -D packaging:默认为jar...
NULL 博文链接:https://lipaneyeti.iteye.com/blog/2041668
maven-dependency-tree-parser-1.0.6.jar,用于mvn depenency:tree的记录解析
maven-dependency-versions-check-plugin-2.0.2-sources.jar
这是一个maven依赖+继承+聚合的小例子,用来参考和学习maven
这样,您可以确保您不会浪费时间在Apache Maven范围之外的东西上。 假设您的问题不存在,请提交该问题的票证。 清楚地描述问题,包括在出现错误时重现的步骤。 确保填写您知道存在问题的最早版本。 在GitHub上...
maven-dependency-analyzer-0.6.jar
maven-dependencygraph-plugin-0.0.4.jar