而与Maven构建JAR文件被损坏(jar file gets corrupted while bu

2019-06-24 22:48发布

同时建立一个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有一些罐子和其他一些文件,结果是:myWar / somefolder / a.jar文件,但是当我打开这个罐子在debugger..i中的类得到错误的WinZip是

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

但是同一个类文件可以看到,当我即外战原始文件夹中查看。 那么,有没有在复制罐子错了吗? 谢谢。

Answer 1:

除去<filtering>true</filtering> ,它破坏的jar文件。



Answer 2:

此外,您还可以继续受益使用Maven过滤不破坏里面罐子(是的,我确实需要包装与罐子内,使用过滤过)

我们选择从过滤扩展排除罐子。

在父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>

请注意,我们增加罐子扩展以及默认的Maven排除文件类型(它的一个zip毕竟)。

除了避免归档的腐败,也加快了,因为它不具有过滤大文件的过程。



Answer 3:

尝试的Maven Assembly插件 。 这是我最喜欢的插件自定义资源添加到* .war文件。 另请参见预定义的描述符文件 。



Answer 4:

我有一个类似的错误,当我添加

<copy ...>
<fileset ... />
<filterchain>
    <tokenfilter>
         <replacestring from="..." to="..." />
    </tokenfilter>
</filterchain>
</copy>

在ANT我的副本任务。 复印时,他们就损坏的jar文件。 我已经通过应用过滤器只对目标的文本文件,而不是jar文件解决了这个。



Answer 5:

正如除了其他的答案,另一种选择是使过滤仅适用于需要过滤的资源:

<build>
...
        <resources>
            <resource>
                <filtering>true</filtering>
                <directory>src/main/resources</directory>
                <includes>
                    <include>core.properties</include>
                </includes>
            </resource>
            <resource>
                <filtering>false</filtering>
                <directory>src/main/resources</directory>
                <includes>
                    <include>pdf/color_profile/sRGB.icc</include>
                </includes>
            </resource>
        </resources>
</build>


文章来源: jar file gets corrupted while building with maven