kan*_*kan 5 java maven-3 maven
当我为我的项目运行"mvn dependency:tree"时,它显示以下内容:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ xxxxx ---
[INFO] com.xxx.xxx:xxxxx:war:3.1.0-SNAPSHOT
...
[INFO] +- commons-configuration:commons-configuration:jar:1.5:compile
[INFO] | \- commons-beanutils:commons-beanutils-core:jar:1.7.0:compile
[INFO] +- org.seleniumhq.selenium:selenium-api:jar:2.34.0:test
[INFO] | +- com.google.guava:guava:jar:14.0:test
[INFO] | \- org.json:json:jar:20080701:test
[INFO] +- org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.34.0:test
[INFO] | +- org.seleniumhq.selenium:selenium-remote-driver:jar:2.34.0:test
[INFO] | | +- cglib:cglib-nodep:jar:2.1_3:test
[INFO] | | +- net.java.dev.jna:jna:jar:3.4.0:test
[INFO] | | \- net.java.dev.jna:platform:jar:3.4.0:test
[INFO] | \- net.sourceforge.htmlunit:htmlunit:jar:2.12:test
[INFO] | +- org.apache.commons:commons-lang3:jar:3.1:test
[INFO] | +- org.apache.httpcomponents:httpmime:jar:4.2.3:test
[INFO] | +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.12:test
[INFO] | +- xerces:xercesImpl:jar:2.10.0:test
>>>[INFO] | | \- xml-apis:xml-apis:jar:1.4.01:compile
[INFO] | +- net.sourceforge.nekohtml:nekohtml:jar:1.9.18:test
[INFO] | +- net.sourceforge.cssparser:cssparser:jar:0.9.9:test
[INFO] | | \- org.w3c.css:sac:jar:1.3:test
[INFO] | \- org.eclipse.jetty:jetty-websocket:jar:8.1.9.v20130131:test
[INFO] +- org.seleniumhq.selenium:selenium-firefox-driver:jar:2.34.0:test
...
Run Code Online (Sandbox Code Playgroud)
正如您在标记行上看到的那样,xml-apis具有"编译"范围,因此它被打包到.war文件中.为什么会这样?
更有趣的是,它仅在使用Java5时发生,对于Java6,依赖性显示为"test".
Maven版本:3.0.4
研究以下 Maven 命令的输出。
mvn -X dependency:tree -Dverbose
Run Code Online (Sandbox Code Playgroud)
这应该可以告诉您为什么 Maven 将范围从测试升级为编译。
我有类似的问题。
在我的例子中,父 pom 的 dependencyManagement 中的条目设置了要编译的依赖工件的范围。实际上,我省略了范围标记,它实际上与将其设置为编译相同。将其更改为提供帮助。似乎 dependencyManagement 中的范围优先于传递范围。这是有道理的,但当您只想定义版本时,仍然会引起混乱。
实际上并不难发现:查看 effective-pom 显示了 dependencyManagement 条目。
归档时间: |
|
查看次数: |
2310 次 |
最近记录: |