2017-07-27 293 views
1

技術的內部屬性:Maven的3 +的IntelliJ + ElasticSearch 5.5.0 + Carrot2 3.15.1Maven的依賴

我有Carrot2和ElasticSearch一個項目,上升了一些衝突。 Carrot2使用Lucene 5.3.1,ElasticSearch使用6.3.1版本。我想強制carrot2使用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在外部依賴中使用我的項目屬性值?

+0

您是否嘗試過[從https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html中)從胡蘿蔔的Lucene依賴? – Val

+0

不知道你在做什麼,但我建議使用這個插件:https://github.com/carrot2/elasticsearch-carrot2並堅持所有項目的兼容版本(ES,C2,插件本身)。 –

回答

0

@Val謝謝。一點解釋:

我已經嘗試在問題的一開始就添加排除,但僅限於lucene-core。它沒有在我的Windows機器上工作,但似乎在另一個基於Linux的平臺上正常工作。我已新增下列排除,似乎在任何機器上運行:

<dependency> 
    <groupId>org.carrot2</groupId> 
    <artifactId>carrot2-core</artifactId> 
    <version>3.15.1</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-core</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-analyzers-common</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-backward-codecs</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-highlighter</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-memory</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-queryparser</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-analyzers-smartcn</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

但是返回回僅一個排阻在我的Ubuntu + intellij17 +行家3.3.9 lucene-core工作正常,但在Windows不能正常工作+ intellij14 + maven 3.3.3。

步驟: Maven的清潔 - >重新導入所有的Maven項目 - >重建

似乎都配置有重建/緩存,這使我困惑的不同的策略。