我怎么能期望maven解决子jar所需的依赖关系?

时间:2015-03-02 04:56:33

标签: maven

我有一个父项目(有自己的pom.xml),我将子项目导入为具有自己的pom.xml的jar。 在父pom.xml中,我已将我的子jar指定为依赖项 - 这会得到解决,但我希望maven解析我的子jar所需的依赖项。

我的用例复制: 当我包含spring-web-mvc.jar时,会自动解决传递依赖关系。 我有一个类似的要求,我将child.jar包含在一个主框架项目中,并期望传递依赖关系得到解决(Notw:未托管child.jar,它打包为jar并存在于本地文件系统中)

当前结构:

儿童项目:

  

| ---- / SRC /主/ JAVA
  | ---- / src目录/主/资源
  | ---- child-pom.xml

>This child project will be a jar as dependency in the parent project  

父项目

  

| ---- / SRC /主/ JAVA
  | ---- / src目录/主/资源
  | ----的 /src/main/webapp/WEB-INF/lib/child.jar
  | ---- parent-pom.xml

问题
当我从父项目创建一个战争时,我想要所有依赖,包括传递的,在WEB-INF lib中显示。

目前尚未发生这种情况。

1 个答案:

答案 0 :(得分:0)

首先,当谈论父母/孩子Maven项目时,你会有自己的孩子"在一个公共父项目中指定为modules,该项目本身正在打包包装类型pom,而不是使它们成为父项目的依赖项。

当涉及到你孩子的依赖关系时,"或者通常"依赖关系的依赖关系"这些被称为传递依赖,并在这里找到的官方文档中得到了很好的解释:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

解决那些传递依赖关系是Mavens的核心优势之一,默认情况下保证,除非它们导致冲突导致构建失败。

这里有两件事需要仔细研究一下执法者插件(http://maven.apache.org/enforcer/maven-enforcer-plugin/)和着色器插件(http://maven.apache.org/plugins/maven-shade-plugin/)....以及corse的官方文档(阅读整篇文章)事情需要不到一天 - 然后为特定主题进一步支持你,而如果你已经有pom.xml文件并且你被困在某个地方我们也很乐意进一步支持你。

虽然enforcer-plugin涵盖了关于相同人工制品的不同版本的某些冲突,但着色器插件只会将您指定的所有内容打包到一个jar用于反向工程(它不是正常的用例,但我有时会这样使用它,如果我是绝对不确定在我的最终档案中结束了什么。

另外值得一看的是maven发行版中已经提供的依赖项插件 - mvn dependency:tree -Dverbose将为您提供有关已解决的依赖项(以及可能的版本冲突)的非常详细的信息。