-
Maven集成时依赖jar包版本控制问题10
我有一个WEB工程需要用到commons-collections和commons-dbcp.
代码中用到的是commons-collections的3.1版本特性,但是资源库中commons-dbcp依赖的
commons-collections指定了2.1版本。看了下commons-dbcp-1.2.1.pom:
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>2.1</version>
</dependency>
当我将web工程打包时,maven会将commons-collections-3.1.jar
和commons-collections-2.1.jar都拷贝进WAR包。 如何只让maven只将
commons-collections-3.1.jar拷贝到war包中去?
问题补充:
谢谢,jansel的答复,方案1是可以行的,但是觉得maven应该有其它解决方案,所以发贴出来咨询一下。方案2我试过了,在我自己的工程pom.xml文件中指定了
高版本的common-collections,但是maven做package的时候依赖会将两个版本的common-collections库都打进WEB-INF/lib,我的maven版本是2.0.9.
问题补充:
E:\NGWORK\javaprj\webapp>mvn dependency:tree -Dverbose -Dincludes=commons-collections
E:\NGWORK\javaprj\webapp>set MAVEN_OPTS=-Xms64m -Xmx512m
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'dependency'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - asiainfo.cboss:cboss:war:SNAPSHOT
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
Downloading: http://repo1.maven.org/maven2/asiainfo/cas/aicasclient/1.0/aicasclient-1.0.pom
Downloading: http://repo1.maven.org/maven2/cmcc/twcmcc/1.4/twcmcc-1.4.pom
Downloading: http://repo1.maven.org/maven2/castor/castor-xml/1.0/castor-xml-1.0.pom
Downloading: http://repo1.maven.org/maven2/asiainfo/openboss/openclient/2.0/openclient-2.0.pom
Downloading: http://repo1.maven.org/maven2/xstream/xstream/1.3/xstream-1.3.pom
Downloading: http://repo1.maven.org/maven2/jdk/tools/1.4.2/tools-1.4.2.pom
Downloading: http://repo1.maven.org/maven2/servlet/servlet/2.3/servlet-2.3.pom
Downloading: http://repo1.maven.org/maven2/asiainfo/cboss/portalExternal/1.8/portalExternal-1.8.pom
Downloading: http://repo1.maven.org/maven2/asiainfo/openbuff/EzfrmWeb/1.0/EzfrmWeb-1.0.pom
Downloading: http://repo1.maven.org/maven2/asiainfo/openbuff/EzfrmBiz/1.0/EzfrmBiz-1.0.pom
Downloading: http://repo1.maven.org/maven2/net/sf/jasperreports/2.0.3/jasperreports-2.0.3.pom
Downloading: http://repo1.maven.org/maven2/lowagie/itext/1.3.1/itext-1.3.1.pom
Downloading: http://repo1.maven.org/maven2/lowagie/itext-asian/1.0/itext-asian-1.0.pom
Downloading: http://repo1.maven.org/maven2/net/sf/json/2.2.1/json-2.2.1.pom
Downloading: http://repo1.maven.org/maven2/net/sf/ezmorph/1.0.4/ezmorph-1.0.4.pom
Downloading: http://repo1.maven.org/maven2/edu/concurrent/1.0/concurrent-1.0.pom
Downloading: http://repo1.maven.org/maven2/asiainfo/ny/nysecurity/1.0/nysecurity-1.0.pom
Downloading: http://repo1.maven.org/maven2/cmcc/trustwork/1.4/trustwork-1.4.pom
Downloading: http://repo1.maven.org/maven2/cmcc/pwdSvr/1.4/pwdSvr-1.4.pom
Downloading: http://repo1.maven.org/maven2/poi/poi/2.5.1-FINAL/poi-2.5.1-FINAL.pom
[INFO] [dependency:tree]
[INFO] asiainfo.cboss:cboss:war:SNAPSHOT
[INFO] +- asiainfo.cboss:cboss-common:jar:SNAPSHOT:compile
[INFO] | \- org.apache.velocity:velocity:jar:1.5:compile
[INFO] | \- (commons-collections:commons-collections:jar:3.1:compile - omitted for conflict with 2.1)
[INFO] +- commons-collections:commons-collections:jar:3.1:runtime (scope not updated to compile)
[INFO] +- commons-dbcp:commons-dbcp:jar:1.2.1:compile
[INFO] | \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 3.1)
[INFO] +- commons-beanutils:commons-beanutils:jar:1.6:compile
[INFO] | \- (commons-collections:commons-collections:jar:2.0:compile - omitted for conflict with 3.1)
[INFO] \- commons-pool:commons-pool:jar:1.2:compile
[INFO] \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 3.1)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 33 seconds
[INFO] Finished at: Wed Sep 09 13:18:59 CST 2009
[INFO] Final Memory: 13M/63M
问题补充:
的确是按最短路径实现的,我在自己的pom.xml中指定了使用版本,maven就是使用这个版本的。 上午是因为忘记做clean了,所以原来已经拷贝到WEB-INF/lib目录的库没有被清理这样commons-collections-2.1.jar还是会存在, 让我误认为不能生效。2009年9月08日 20:35
2个答案 按时间排序 按投票排序
-
采纳的答案
引入
commons-dbcp
的时候把commons-collections-2.1 exclude掉就行了
或者
在你的直接的POM中引入
commons-collections
Maven是按照最短路径来的,只要你直接在POM引入了,就会用你直接引入的。
Maven2.0.9是这样的,不知道2.1这个规则有没有改,LZ试一试上面两种方法
2009年9月09日 09:11
-
正好我也有这么一个工程,同时指定了,但是最好只有一个jar啊。
你看一下 mvn dependency:tree 看一下2.1是谁引入的 然后就是一定要比较一下2.1和3.1的groupId和artifactId 是不是一样 万一不行就把POM文件发上来 我在我的系统上Run一把2009年9月09日 11:24
相关推荐
本文将详细讨论如何将Jetty与Maven进行集成,并介绍关键的`maven-jetty-plugin`插件及其不同版本。 1. Maven与Jetty集成的意义: Maven通过其强大的依赖管理功能,使得项目构建变得简单和规范。而Jetty作为轻量级...
Maven通过在项目对象模型(Project Object Model, POM)文件中定义依赖,可以自动下载并管理所需的jar包,包括JSONObject,简化了项目的构建和部署过程。 **标签解析:** “JSONObject jar”标签明确了我们的讨论...
接下来,我们将详细介绍如何使用IntelliJ IDEA批量导出Maven项目中的依赖jar包。 ##### 1. 配置Maven插件 首先,需要确保项目中已经正确配置了Maven插件。打开项目的`pom.xml`文件,在`<build>`标签内添加如下配置...
总结起来,"mavenjar 包" 的处理涉及到了 Maven 的 JAR 文件打包、依赖管理和 IDE 集成。正确地将 JAR 文件放入 Java 环境并更新开发环境,可以确保项目的正常运行和开发效率的提升。对于Java开发者来说,熟练掌握 ...
标题和描述提到了在非Maven项目中集成MinIO时可能会遇到的jar包冲突问题。 以下是你提供的压缩包中的jar文件及其在MinIO集成中的作用: 1. **guava-28.1-jre.jar**:Google的Guava库提供了一系列实用工具类,如...
"elasticsearch 5.4.0 maven 依赖jar包" 指的是在 Maven 项目中使用 Elasticsearch 5.4.0 版本时,需要的全部依赖库文件。这些 jar 包包括 Elasticsearch 核心库、X-Pack 插件以及其他相关的第三方库,例如 Lucene、...
在本案例中,公司需要使用一个第三方接口的加密jar包,该jar包内部依赖的高版本与现有项目框架中的低版本冲突。以下是如何实现Maven项目中多版本依赖兼容的解决方案: 1. **理解Maven依赖管理**: Maven依赖管理...
Maven通过中央仓库下载所需的jar包,使得开发者能够轻松地集成第三方库。然而,有时候我们需要将本地的jar包安装到Maven仓库,以便于在项目中引用,这就是“maven-install-jar-tool”所解决的问题。 “maven-...
在Java开发中,Maven是一个广泛使用的构建工具,它依赖于中央仓库中的各种jar包来构建项目。然而,有时候我们可能需要使用一些不在中央仓库中的第三方库,这就需要我们将这些jar包手动导入到Maven的本地库。"maven...
在本文中,我们将详细讨论如何使用Maven来创建可执行的JAR包,使得通过`java -jar`命令可以直接运行。我们提供两种方法来实现这个目标。 ### 方法一:使用`maven-assembly-plugin` 1. **集成插件**:在`pom.xml`...
在将 Maven 项目依赖的 jar 包导出时,可以设置依赖级别。通常使用 compile 级别。输入以下命令: ``` mvn dependency:copy-dependencies -DoutputDirectory=lib -DincludeScope=compile ``` 这将将 Maven 项目依赖...
在生成了Jar包和source jar之后,我们通常还需要将它们上传到本地Maven仓库中,以便于后续的项目构建能够方便地引用这些依赖。 **使用命令行上传** 上传Jar包到本地Maven库的命令格式如下: ```bash mvn install:...
总的来说,通过Maven下载`QRCode.jar`包,可以帮助Java开发者轻松地集成二维码生成功能,而无需手动下载和管理依赖。只需正确配置`pom.xml`文件,Maven就能自动处理所有下载和依赖管理,使项目构建更加简洁高效。
在使用Maven构建Kettle项目时,我们需要确保正确配置Maven的POM.xml文件,以包含所有必要的依赖项,这些依赖项通常是以jar包的形式存在。"Kettle Maven jar"标签提示我们,这里涉及的是Kettle与Maven结合使用时所需...
Spring MVC是Spring框架的一个模块,专门用于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,使得开发者可以轻松地分离业务逻辑...这些jar包共同构建了Spring MVC框架,为开发者提供了强大的Web应用开发能力。
Java集成Kettle所有Jar包是一项常见的任务,尤其对于那些在数据处理、ETL(提取、转换、加载)项目中使用Kettle(也称为Pentaho Data Integration或PDI)的开发者来说。Kettle是一个强大的开源数据集成工具,它提供...
标题“jodconverter2.2.2.jar Maven依赖包”涉及到的是一个Java开发中的关键组件,即JODConverter库的一个特定版本。JODConverter是一个开源的文档转换工具,它允许用户在Java应用程序中方便地将各种Office文档格式...
在提供的`pom.xml`文件中,可以看到对Kettle相关jar包的依赖配置,这有助于我们在本地Maven仓库中正确地安装和引用这些库。 手动安装Kettle的jar包到Maven仓库的步骤如下: 1. 下载Kettle的jar文件:这可能来自...
Maven在构建项目时,会自动解析这个依赖关系,并从仓库中下载对应的jar包到本地仓库。如果需要自定义仓库位置或者设置代理,可以在settings.xml文件中进行配置。 除此之外,Maven仓库还支持SNAPSHOT版本的管理,...
总结来说,离线导入Maven依赖需要预先下载所有必要的jar包,并在内网环境中正确配置Maven的本地仓库和JDK。这个过程虽然相对繁琐,但对那些无法直接访问互联网的项目而言是必要的。同时,也要注意维护好私有仓库,以...