技术:Maven 3 + IntelliJ + ElasticSearch 5.5.0 + Carrot2 3.15.1
我有一个带有 Carrot2 和 ElasticSearch 的项目,这引起了一些冲突。Carrot2 使用 Lucene 5.3.1,ElasticSearch 使用 6.3.1 版本。我想强制胡萝卜2 使用 6.3.1 Lucene 版本来修复它。
我试图在我的项目的主 pom 文件中添加一个属性:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<elasticsearch.version>5.4.2</elasticsearch.version>
<org.apache.lucene.version>6.5.1</org.apache.lucene.version>
</properties>
不幸的是,这种方式仍然会引发由 Lucene 版本冲突引起的错误。最后,我通过更改胡萝卜的依赖 pom 文件的内部值找到了本地机器的解决方案:
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>5</version>
</parent>
<groupId>org.carrot2</groupId>
<artifactId>carrot2</artifactId>
<version>3.15.1</version>
<name>Carrot2</name>
(...)
<properties>
(...)
<org.apache.lucene.version>6.5.1</org.apache.lucene.version>
<org.simpleframework.version>2.7.1</org.simpleframework.version>
<org.carrot2.attributes>1.3.1</org.carrot2.attributes>
</properties>
它工作正常,但只在我的本地机器上。在胡萝卜的 pom 文件中更改的 Lucene 版本似乎没有传播,并且需要在任何项目实例上手动更改此版本。是否有可能强制 maven 在外部依赖中使用我的项目属性值?