2 siegecat siegecat 于 2016.04.27 09:05 提问

使用maven解决两个开源框架的包冲突,必须下载它的源代码版本来自己编译吗?

最近下载了两个相互配合的开源框架,都是编译好的二进制版本,但运行时报错提示jar包冲突。
自然想到了使用maven来解决包依赖、包冲突等问题。
但我对maven的理解是:它根据pom.xml文件来依次完成下载、编译、测试、打包等工作。

那我的问题就是,若要使用maven来管理包,是不是不能下载二进制版本的程序,只能下载源代码版本的来自己编译?因为如果下载编译好的二进制版本,每个框架其中的lib文件夹下已经有很多jar包,这些jar包已经固定不变了且可能导致冲突,而这时maven已经无能为力了。

如果真的需要下载源代码版本,通过maven编译并管理jar包,而我又同时需要使用两个相互关联的开源框架,我是不是要合并两个框架源代码里自带的pom.xml文件呢?怎么合并呢?

2个回答

devmiao
devmiao   Ds   Rxr 2016.04.27 09:07
zjysource
zjysource   2016.04.28 16:36

https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html
maven官方文档有说明滴。

 <project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>sample.ProjectA</groupId>
  <artifactId>Project-A</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  ...
  <dependencies>
    <dependency>
      <groupId>sample.ProjectB</groupId>
      <artifactId>Project-B</artifactId>
      <version>1.0-SNAPSHOT</version>
      <exclusions>
        <exclusion>
          <groupId>sample.ProjectD</groupId> <!-- Exclude Project-D from Project-B -->
          <artifactId>Project-D</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
</project>
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!