首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jar文件在使用maven构建时损坏

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

Stack Overflow用户
提问于 2012-05-29 19:00:50
回答 5查看 16.5K关注 0票数 30

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

这是我的war pom.xml的一部分,我在其中复制jars

<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/某个文件夹/a.jar,但是当我在调试器中打开这个jar中的类时,我在WinZip中得到错误

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

然而,当我在原始文件夹中(即war之外)查看时,可以看到相同的类文件。那么在复制jars的时候有没有出错呢?谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-29 20:25:34

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

票数 67
EN

Stack Overflow用户

发布于 2013-04-19 00:50:30

此外,您还可以继续受益于使用maven过滤,而不会破坏内部的jars。

我们选择从过滤的扩展中排除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排除的文件类型(毕竟它是一个压缩文件)。

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

票数 14
EN

Stack Overflow用户

发布于 2012-05-29 20:36:25

试试Maven Assembly Plugin。这是我最喜欢的插件,可以将自定义资源添加到*.war文件中。另请参见Pre-defined Descriptor Files

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10797831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档