apache - 尝试覆盖 Apache Tika 0.9 从 PDFBOX 1.4.0 到 PDFBOX 1.6.0 的依赖关系

标签 apache maven pom.xml apache-tika

    <dependency>
                    <groupId>org.apache.tika</groupId>
                    <artifactId>tika-parsers</artifactId>
                    <version>0.9</version>
                </dependency>

我试图在下面添加这个依赖项,而不是在 tika 的依赖项之上,以覆盖 Tika 对 PDFBOX 1.6.0 的依赖项,但它不起作用..

<dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parsers</artifactId>
                <version>0.9</version>
    <exclusions> 
    <exclusion>
    <groupId>org.apache.pdfbox</groupId>
          <artifactId>pdfbox</artifactId>
          </exclusion>
    </exclusions>
    </dependency> 
    <dependency>
    <groupId>org.apache.pdfbox</groupId>
              <artifactId>pdfbox</artifactId>
              <version>1.6.0</version>
    </dependency>

Tika Parser 依赖于 PdfBox 版本 1.4.0。我想将 Apache Tika 的这种依赖关系更改为 PdfBox 版本 1.6.0。如何在我的 Pom.xml 文件中执行此操作。 这是我的 pom.xml 文件。任何建议将不胜感激。

    <   project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
                <modelVersion>4.0.0</modelVersion>

                <groupId>com.xyz.search</groupId>
                <artifactId>xyzz-crawler4j</artifactId>
                <version>0.0.1-SNAPSHOT</version>
                <packaging>jar</packaging>

                <name>qcom-crawler4j</name>
                <url>http://maven.apache.org</url>

                <properties>
                    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                </properties>

                <repositories>
                    <repository>
                        <id>repo-for-dsiutils</id>
                        <url>http://ir.dcs.gla.ac.uk/~bpiwowar/maven/</url>
                    </repository>
            <repository>
                    <id>JBoss</id>
                    <name>jboss-maven2-release-repository</name>
                    <url>https://oss.sonatype.org/content/repositories/JBoss</url>
                  </repository>
                    <repository>
                        <id>oracle</id>
                        <url>http://download.oracle.com/maven</url>
                    </repository>

                    <repository>
                        <id>boilerpipe</id>
                        <url>http://boilerpipe.googlecode.com/svn/repo/</url>
                    </repository>
                </repositories>

                <dependencies>

                    <dependency>
                        <groupId>org.apache.httpcomponents</groupId>
                        <artifactId>httpclient</artifactId>
                        <version>4.0.1</version>
                        <!-- 4.1.1 -->
                    </dependency>

//PDFBOX version 1.6.0
                        <dependency>
                      <groupId>org.apache.pdfbox</groupId>
                      <artifactId>pdfbox</artifactId>
                      <version>1.6.0</version>
                    </dependency>

                    <dependency>
                        <groupId>org.apache.httpcomponents</groupId>
                        <artifactId>httpcore</artifactId>
                        <version>4.0.1</version>
                    </dependency>
                    <!-- 4.1 -->

                    <dependency>
                        <groupId>it.unimi.dsi</groupId>
                        <artifactId>fastutil</artifactId>
                        <version>6.2.2</version>
                    </dependency>


                    <dependency>
                        <groupId>com.sleepycat</groupId>
                        <artifactId>je</artifactId>
                        <version>4.0.71</version>
                    </dependency>

                    <!-- Boilerpipe -->
                    <dependency>
                        <groupId>de.l3s.boilerpipe</groupId>
                        <artifactId>boilerpipe</artifactId>
                        <version>1.2.0</version>
                    </dependency>
                    <!-- Tika (for non-HTML extractions) -->
                    <dependency>
                        <groupId>org.apache.tika</groupId>
                        <artifactId>tika-core</artifactId>
                        <version>0.9</version>
                    </dependency>

                <dependency>
               <groupId>xerces</groupId>
               <artifactId>xercesImpl</artifactId>
               <version>2.8.1</version>
            </dependency>

            <dependency>
                    <groupId>nekohtml</groupId>
                    <artifactId>nekohtml</artifactId>
                    <version>0.6.5</version>
                  </dependency>


                    <dependency>
                        <groupId>org.apache.tika</groupId>
                        <artifactId>tika-parsers</artifactId>
                        <version>0.9</version>
                    </dependency>
    **// I was trying to add this below dependency instead of just above dependency of tika to override the dependency of Tika to PDFBOX 1.6.0 But its not working..

     <!--   <dependency>
                    <groupId>org.apache.tika</groupId>
                    <artifactId>tika-parsers</artifactId>
                    <version>0.9</version>
        <exclusions> 
        <exclusion>
        <groupId>org.apache.pdfbox</groupId>
              <artifactId>pdfbox</artifactId>
              </exclusion>
        </exclusions>
        </dependency> 
        <dependency>
        <groupId>org.apache.pdfbox</groupId>
                  <artifactId>pdfbox</artifactId>
                  <version>1.6.0</version>
        </dependency>
    -->**


                </dependencies>
            </project>

最佳答案

最干净的方法可能是添加一个 dependencyManagement 部分,用于升级依赖关系树中的 PDFBox 版本。例如:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>pdfbox</artifactId>
      <version>1.6.0</version>
    </dependency>
  </dependencies>
</dependencyManagement>

请注意,许多 Tika 解析器与 PDFBox 等上游解析器库的特定版本紧密相关,因此如果您像这样覆盖依赖项版本,则需要很好地测试系统。

强制更改依赖项版本的另一种方法是使用 Tika 的最新主干版本,其中 PDFBox 依赖项已经是版本 1.6.0。此外,将使用更新的依赖项的 Tika 0.10 版本应该会在下周初发布。

关于apache - 尝试覆盖 Apache Tika 0.9 从 PDFBOX 1.4.0 到 PDFBOX 1.6.0 的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504632/

相关文章:

maven/dojo 最佳实践问题

java - jBOSS+ ESAPI java.lang.ClassCastException : org. jboss.logmanager.log4j.BridgeLogger 无法转换为 org.owasp.esapi.Logger

java - 如何使用 Maven 设置构建脚本?

java - 有没有一种方法可以将依赖项仅应用于一个包?

python - Django url 模板标签添加绝对文件路径

apache - .htaccess 相同的 url,带或不带/

apache - 拒绝对一个文件的所有访问,但一个 ip | htaccess

javascript - apache xampp 如何查找内部错误 500 的原因

eclipse 错误 : Websockets are currently only supported in Tomcat

maven - 在 Nexus 中部署后,POM.xml 中的变量没有被解析?