使用maven构建JAR文件时损坏

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (117)

在构建WAR文件时,我会将一组JAR从一个位置复制到WAR中的一个文件夹中。虽然文件确实会被复制,但是我认为它们会被破坏,因为在WAR之外,JAR的相同类文件会使用调试器打开,而调试器在从WAR文件中获取后不会打开。

这是我的warum.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有一些JAR和其他一些文件,结果是:mywar/Somefold/a.jar,但是当我在调试器中打开这个JAR中的类时,我在WinZip中得到了错误

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

但是,当我在原始文件夹(即WAR以外的文件夹)中查看相同的类文件时,可以查看它。

提问于
用户回答回答于

移除<filtering>true</filtering>,它破坏了JAR文件。

用户回答回答于

此外,可以继续使用maven过滤。

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

在父POM的pluginManagement部分中,我们将此配置

 <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)。

除了避免存档的损坏之外,它还加快了处理速度,因为它不需要过滤大型文件。

扫码关注云+社区