maven 中的冲突库

Conflict library in maven

我有一个使用 Jhipste 3.4.2 创建的项目。添加库 JasperReport 6.2.2.

<dependency>
  <groupId>net.sf.jasperreports</groupId>
  <artifactId>jasperreports</artifactId>
  <version>6.2.2</version>
</dependency>

项目启动失败。我发现这是库 lucene-core 的问题。 Elasticsearch 使用 4.10.4 和 JasperReport 4.5.1 因为你可以解决这个问题。

使用

sprint-boot-starter-data-elasticsearch

sprint-boot-starter-parent (1.3.5.RELEASE)

修改jasperreports的依赖项:

    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.2.2</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

所以lucene-core4.5.1不会被jasperreports绘制,你可以指定你要使用的版本

目前使用的是4.5.1版本,因为在依赖层级中它比4.10.4版本更接近你自己的pom:

这是通往 4.10.4 的漫长路径:sprint-boot-starter-data-elasticsearch --> spring-data-elasticsearch --> elasticsearch --> lucene-core

这是到 4.5.1 的捷径:jasperreports --> lucene-core

最后的答案是,在POM中添加如下代码。

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-core</artifactId>
    <version>4.10.4</version>
    <scope>compile</scope>
    </dependency>
<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-analyzers-common</artifactId>
    <version>4.10.4</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-queryparser</artifactId>
    <version>4.10.4</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.3.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>