免责声明:请不要提交有关如何更改此架构的建议,我无法对其进行更改。我正在尝试一个新的工作,试图弄清楚事情是如何运作的,使可见的架构变化不是一个变量,也不属于这篇文章的范围。感谢
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类路径。
答案 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
然后返回一些具体问题以获得具体答案。