我对来自很多我的deps的commons-logging有一个传递依赖,并且出于某种原因我明确地控制了版本,并且在它将它设置为运行时因为我不在任何地方使用它:< / p>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>runtime</scope>
</dependency>
然而,有了这个,我的Scala编译失败了:
[INFO] --- maven-scala-plugin:2.15.2:compile (default) @ dfkka ---
[INFO] Checking for multiple versions of scala
[INFO] includes = [**/*.scala,**/*.java,]
[INFO] excludes = []
[INFO] /Users/viktor/dev/projects/dfkka/src/main/scala:-1: info: compiling
[INFO] /Users/viktor/dev/projects/dfkka/target/generated-sources/scalaxb:-1: info: compiling
[INFO] Compiling 72 source files to /Users/viktor/dev/projects/dfkka/target/classes at 1318518178794
[ERROR] error: error while loading AbstractLayoutManager, Missing dependency 'class org.apache.commons.logging.Log', required by /Users/viktor/.m2/repository/ar/com/fdvs/DynamicJasper/3.1.9/DynamicJasper-3.1.9.jar(ar/com/fdvs/dj/core/layout/AbstractLayoutManager.class)
[ERROR] one error found
如果我将其改回
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
编译成功。 scalac什么时候需要这些传递性的deps? scala-ide中的表示编译器似乎有效......
所以DynamicJasper中的AbstractLayoutManager需要它,但我甚至不在我的代码中的任何地方引用该类。为什么说“加载”?它真的加载了这个类吗?我真的很想理解这个...