jar 文件在使用 maven 构建时损坏

2022-09-01 11:16:23

在构建战争文件时,我正在将一组jars从某个位置复制到战争内部的文件夹中。虽然文件确实被复制了,但是我认为它们被损坏了,因为在战争之外拍摄时,jar的相同类文件会以调试器打开,而从war文件中获取后它不会打开。

这是我的战争pom的一部分.xml我复制罐子

<execution> 
    <id>copy-jars</id> 
    <phase>process-resources</phase> 
    <goals> 
        <goal>copy-resources</goal> 
    </goals> 
    <configuration> 
        <outputDirectory>${basedir}/target/${project.artifactId}-${buildNumber}/somefolder</outputDirectory> 
         <resources> 
            <resource> 
                <directory>SomeSourceDirectory</directory> 
                <filtering>true</filtering> 
                <includes> 
                    <include>**/**</include> 
                </includes>
            </resource>
        </resources> 
    </configuration> 
</execution>

SomeSourceDirectory有一些jars和一些其他文件结果是:myWar/somefolder/a.jar但是当我在调试器中打开这个jar中的类时。我在WinZip中得到错误

Invalid compressed data to extract.
Severe Error:  Compressed data is invalid

但是,当我在原始文件夹中(即在战争之外)查看相同的类文件时,可以查看它。那么复制罐子时是否有错误?谢谢。


答案 1

删除 ,它会损坏jar文件。<filtering>true</filtering>


答案 2

此外,您可以继续使用maven过滤而不会损坏内部的jar。

我们选择从过滤的扩展中排除 jar。

在父 pom 的插件管理部分中,我们放置此配置

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <configuration>
      <encoding>${project.build.sourceEncoding}</encoding>
      <nonFilteredFileExtensions>
        <nonFilteredFileExtension>jar</nonFilteredFileExtension>
        <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
        <nonFilteredFileExtension>swf</nonFilteredFileExtension>
        <nonFilteredFileExtension>zip</nonFilteredFileExtension>
        <nonFilteredFileExtension>bz2</nonFilteredFileExtension>
        <nonFilteredFileExtension>gz</nonFilteredFileExtension>
        <nonFilteredFileExtension>acp</nonFilteredFileExtension>
        <nonFilteredFileExtension>bin</nonFilteredFileExtension>
        <nonFilteredFileExtension>odt</nonFilteredFileExtension>
        <nonFilteredFileExtension>doc</nonFilteredFileExtension>
        <nonFilteredFileExtension>xls</nonFilteredFileExtension>
      </nonFilteredFileExtensions>
    </configuration>
  </plugin>

请注意,我们添加了jar扩展名以及默认的maven排除的文件类型(毕竟这是一个zip)。

除了避免存档损坏外,它还加快了过程,因为它不必过滤大文件。


推荐