我有一个多模块项目,我正在使用Gradle。有一个模块Data,我对Neo4J有依赖关系。它使用了lucene-core - 版本3.6.2。
我在另一个模块中使用此模块作为依赖项,我在使用Jena-Text -version 1.1.2,它使用lucene-core版本4.6.1。现在,我遇到了冲突,所以我为Gradle运行了dependencyInsight插件,并在oe模块中排除了Neo4J的依赖项,因为我不需要它们。在lucene版本4.6.1中使用gradle编译代码很好。
问题是,每当我尝试在oe模块中编码时,我都会从lucence 3.6.2获得自动完成的建议,但是当Gradle最终编译它时,它会在corect版本中执行,即4.6。 1。
例如,我想在Lucene中编写自己的Analyzer。编写分析器的方式已从3.6版更改为4.6版。现在变得很难编码,如果我的IDE一直告诉我,我正在写一个错误的代码,基于我最终不会使用的jar。这在IntelliJ Idea 13,Enterprise Edition和Eclipse Luna中都有发生。
这就是我排除它们的方式。
compile(project(":data")){
exclude group:'org.springframework.data', module: 'spring-data-neo4j-rest'
exclude group:'org.springframework.data', module: 'spring-data-neo4j'
}
这是在我的oe模块中为lucene-core运行depedencyInsight的结果。
/oe$ gradle -q dependencyInsight --configuration compile --dependency lucene-core
org.apache.lucene:lucene-core:4.6.1
+--- compile
+--- org.apache.jena:jena-text:1.1.2
| \--- compile
+--- org.apache.lucene:lucene-analyzers-common:4.6.1
| +--- compile
| \--- org.apache.jena:jena-text:1.1.2 (*)
+--- org.apache.lucene:lucene-queries:4.6.1
| \--- org.apache.lucene:lucene-queryparser:4.6.1
| \--- org.apache.jena:jena-text:1.1.2 (*)
+--- org.apache.lucene:lucene-queryparser:4.6.1 (*)
\--- org.apache.lucene:lucene-sandbox:4.6.1
\--- org.apache.lucene:lucene-queryparser:4.6.1 (*)
(*) - dependencies omitted (listed previously)
答案 0 :(得分:2)
在intellij
中,您可以通过点击dependencies
中模块的project structure
标签上的向上/向下箭头来确定其使用的jar的优先级。不理想,但应修复代码完成问题。