Eclipse中的Maven依赖项

时间:2013-09-11 15:41:15

标签: eclipse maven classpath

免责声明:请不要提交有关如何更改此架构的建议,我无法对其进行更改。我正在尝试一个新的工作,试图弄清楚事情是如何运作的,使可见的架构变化不是一个变量,也不属于这篇文章的范围。感谢

BODY:我对Maven相对较新,我目前正在努力弄清楚Eclipse如何为项目构建Maven Dependencies列表。我的Eclipse工作区符合以下布局:

workspace
  |
  |--maven
  |    |
  |    |--pom.xml (super pom)
  |
  |--proj_1
  |    |
  |    |--pom.xml (parent->relativePath=../maven/pom.xml)
  |    |
  |    |--src
  |
  |--proj_2
  |    |
  |    |--pom.xml (parent->relativePath=../maven/pom.xml)
  |    |
  |    |--src
  ...
  |
  |--proj_n
       |
       |--pom.xml (parent->relativePath=../maven/pom.xml)
       |
       |--src

其中 workspace 下的每个节点都是Eclipse项目。在查看Eclipse Package Explorer时,pom.xml(我认为)的存在会触发创建名为Maven Dependencies的库包,其中包含进入该项目的classpath的jar。

但是,如果Eclipse如何从pom.xml文件的层次结构中提取必要的引用jar列表,​​我还是不明白。例如。我看到我的Maven依赖项中列出了 foobar.jar ,但该项目的pom.xml或它引用的超级pom中都没有这样的条目。我需要对类路径进行一些更改,但我不能直接从Maven依赖项中取出jar(就像我可以从常规Eclipse Referenced Libraries中取出)这导致我认为它需要在有些地方。

请帮助我理解pom.xml层次结构如何转换为引用库的Eclipse类路径。

1 个答案:

答案 0 :(得分:0)

您不应该直接引用父pom.xml个文件,只应在您的子pom.xml文件的顶部引用它们。请注意,此配置中的任何位置都没有 relative 路径。

<parent>
    <groupId>com.yourcompany</groupId>
    <artifactId>your-parent</artifactId>
    <version>your-version</version>
</parent>

您会看到很多.jar个文件未在父pom.xml中直接引用,也未在子pom.xml中直接引用。这是正常的,这些被称为瞬态依赖关系。换句话说,它们是依赖项的依赖项。

您永远不会使用Maven对类路径进行更改,您只需操作<dependency/>节,Maven就会构建您需要的类路径。如果您手动执行此操作,则说错了。从其他一些陈述中,您可能还有其他根本性的错误,因为您正在使用的某些术语,Idiomatic Maven无法解决pom.xml相对路径继承一件事。但我们无法分辨,因为您实际上并未发布实际配置父级 pom.xml的方式。

阅读maven-dependency-plugin,它可以产生这个:

com.xx.xxxpreferences:jar:1.0-SNAPSHOT
+- com.xx.xxx:common:jar:1.0-SNAPSHOT:compile
|  +- org.slf4j:slf4j-jdk14:jar:1.7.5:compile
|  +- com.lowagie:itext:jar:4.2.0:compile
|  |  +- org.bouncycastle:bctsp-jdk14:jar:1.38:compile
|  |  |  +- org.bouncycastle:bcprov-jdk14:jar:1.38:compile
|  |  |  \- org.bouncycastle:bcmail-jdk14:jar:1.38:compile
|  |  +- dom4j:dom4j:jar:1.6.1:compile
|  |  |  \- xml-apis:xml-apis:jar:1.0.b2:compile
|  |  +- jfree:jfreechart:jar:1.0.12:compile
|  |  |  \- jfree:jcommon:jar:1.0.15:compile
|  |  \- org.swinglabs:pdf-renderer:jar:1.0.5:compile
|  +- com.xx.xxx:exceptions:jar:1.0-SNAPSHOT:compile
|  |  \- struts:struts:jar:1.1:compile
|  |     +- commons-beanutils:commons-beanutils:jar:1.6.1:compile
|  |     +- commons-collections:commons-collections:jar:3.1:compile
|  |     +- struts:struts-legacy:jar:1.1:compile
|  |     +- commons-digester:commons-digester:jar:1.6:compile
|  |     +- commons-fileupload:commons-fileupload:jar:1.0:compile
|  |     +- commons-lang:commons-lang:jar:2.1:compile
|  |     +- commons-logging:commons-logging:jar:1.0:compile
|  |     +- commons-validator:commons-validator:jar:1.1.4:compile
|  |     +- oro:oro:jar:2.0.7:compile
|  |     \- javax.sql:jdbc-stdext:jar:2.0:compile
|  +- javax.mail:mail:jar:1.5.0-b01:compile
|  |  \- javax.activation:activation:jar:1.1:compile
|  \- com.netcharts:pro:jar:0.1:compile
+- com.fasterxml.jackson.core:jackson-annotations:jar:2.0.1:compile
+- com.fasterxml.jackson.core:jackson-core:jar:2.2.0:compile
+- com.fasterxml.jackson.core:jackson-databind:jar:2.2.0:compile
+- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.2.1:compile
|  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.2.1:compile
|  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.2.1:compile
+- com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.1.3:compile
|  \- org.codehaus.woodstox:stax2-api:jar:3.1.1:compile
+- org.codehaus.woodstox:woodstox-core-asl:jar:4.1.4:compile
|  \- javax.xml.stream:stax-api:jar:1.0-2:compile
+- org.slf4j:slf4j-api:jar:1.7.5:compile
+- com.google.code.findbugs:jsr305:jar:2.0.1:compile
+- junit:junit:jar:4.11:test
|  \- org.hamcrest:hamcrest-core:jar:1.3:test
\- com.google.guava:guava:jar:14.0:compile

然后返回一些具体问题以获得具体答案。

相关问题