You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven WAR打包时如何排除tess4j依赖中的Windows库文件?

完全可以通过Maven实现打包时剔除tess4j中的win32-x86/winlibraries文件,推荐用maven-war-plugin或者maven-dependency-plugin来处理,两种常用方案如下:

方案一:用maven-war-plugin直接在WAR打包时排除

在项目的pom.xml的<build>节点下添加maven-war-plugin配置,通过packagingExcludes指定要从依赖jar中剔除的文件路径:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.3.2</version> <!-- 使用最新稳定版本即可 -->
      <configuration>
        <!-- 排除tess4j jar包中的win32-x86目录下所有文件 -->
        <packagingExcludes>
          WEB-INF/lib/tess4j-*.jar!/win32-x86/**
        </packagingExcludes>
      </configuration>
    </plugin>
  </plugins>
</build>

这里的!/是Maven定位jar包内部路径的分隔符,tess4j-*.jar匹配所有版本的tess4j依赖包,win32-x86/**表示该目录下的所有文件和子目录都会被排除。

方案二:预处理tess4j依赖(适合需要复用精简版jar的场景)

如果需要多次使用剔除了Windows库的tess4j,可以先解压依赖、删除冗余文件,再重新打包:

  1. 用maven-dependency-plugin解压tess4j到指定目录:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.6.0</version>
  <executions>
    <execution>
      <id>unpack-tess4j</id>
      <phase>process-resources</phase>
      <goals>
        <goal>unpack</goal>
      </goals>
      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>net.sourceforge.tess4j</groupId>
            <artifactId>tess4j</artifactId>
            <version>你的tess4j版本号</version>
            <outputDirectory>${project.build.directory}/tess4j-unpacked</outputDirectory>
          </artifactItem>
        </artifactItems>
      </configuration>
    </execution>
  </executions>
</plugin>
  1. 用maven-clean-plugin删除win32-x86目录:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-clean-plugin</artifactId>
  <version>3.3.2</version>
  <executions>
    <execution>
      <id>remove-win-libs</id>
      <phase>process-resources</phase>
      <goals>
        <goal>clean</goal>
      </goals>
      <configuration>
        <filesets>
          <fileset>
            <directory>${project.build.directory}/tess4j-unpacked/win32-x86</directory>
            <includes>
              <include>**/*</include>
            </includes>
          </fileset>
        </filesets>
        <excludeDefaultDirectories>true</excludeDefaultDirectories>
      </configuration>
    </execution>
  </executions>
</plugin>
  1. 重新打包并安装到本地仓库:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.3.0</version>
  <executions>
    <execution>
      <id>repackage-tess4j</id>
      <phase>package</phase>
      <goals>
        <goal>jar</goal>
      </goals>
      <configuration>
        <classesDirectory>${project.build.directory}/tess4j-unpacked</classesDirectory>
        <finalName>tess4j-no-win</finalName>
      </configuration>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-install-plugin</artifactId>
  <version>3.1.1</version>
  <executions>
    <execution>
      <id>install-modified-tess4j</id>
      <phase>install</phase>
      <goals>
        <goal>install-file</goal>
      </goals>
      <configuration>
        <file>${project.build.directory}/tess4j-no-win.jar</file>
        <groupId>net.sourceforge.tess4j</groupId>
        <artifactId>tess4j</artifactId>
        <version>你的tess4j版本号-no-win</version>
        <packaging>jar</packaging>
      </configuration>
    </execution>
  </executions>
</plugin>

之后直接在依赖中引用这个修改后的版本即可。

注意事项

  • 先解压原始tess4j jar包核对内部路径,不同版本的目录结构可能略有差异,确保配置的路径准确。
  • 方案一操作更简便,适合单次打包场景;方案二适合需要重复使用精简版tess4j的场景。

内容的提问来源于stack exchange,提问作者Rubén Aguado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:42:48