maven-resources-plugin插件的使用

前言

上个月做了一个根据协议模板签署协议的功能,事先把协议模板(pdf文件)放在当前项目的resource目录下,打成jar运行后,在签署协议时,从classpath下读取模板内容然后填充pdf内对应的字段再将签署后的协议上传即可。
在测试时发现虽然能够根据模板生成协议文件并上传,但是把上传后的文件下载到本地打开时提示格式损坏,一开始认为是读取jar内的模板文件获取的输入流有问题(实际上是模板文件有问题),在本地吭呲吭呲一顿debug测试始终没有排查到具体的问题,后来突发奇想看一下打包之后target目录下的模板文件,目录下虽然有模板文件,但是一打开就提示格式损坏,这个时候就意识到了应该是maven打包的时候导致模板文件出了问题。


image.png

然后又开始了面向百度修复bug,一顿百度之后发现了问题,在pom文件中加入以下配置即可

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4.3</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <nonFilteredFileExtensions>
                        <!--过滤掉pdf文件,不对其进行重新编码-->
                        <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>
maven-resources-plugin是什么

先贴上官方文档的地址 maven-resources-plugin
通俗来说,maven-resources-plugin是一个maven打包时进行资源文件复制的插件,使用project.build.resources元素来指定需要复制哪些资源文件。

下面介绍这个插件的一些常用参数

必须参数
  • outputDirectory
    复制资源文件时的输出目录,官网上介绍这个参数是必须参数,但是实际上不设置也行,默认是
    放在${project.build.outputDirectory}目录下
可选参数
  • addDefaultExcludes
    在资源文件复制时是否排除(不复制)的默认文件,默认值是true,开启后会排除以下后缀的文件
    Misc: */~, */##, */.#, */%%, */._
    CVS: **/CVS, /CVS/, **/.cvsignore
    RCS: **/RCS, /RCS/
    SCCS: **/SCCS, /SCCS/
    VSSercer: **/vssver.scc
    MKS: **/project.pj
    SVN: **/.svn, /.svn/
    GNU: **/.arch-ids, /.arch-ids/
    Bazaar: **/.bzr, /.bzr/
    SurroundSCM: **/.MySCMServerInfo
    Mac: **/.DS_Store
    Serena Dimension: **/.metadata, /.metadata/
    Mercurial: **/.hg, /.hg/
    GIT: **/.git, **/.gitignore, **/.gitattributes, /.git/
    Bitkeeper: **/BitKeeper, /BitKeeper/, **/ChangeSet, /ChangeSet/
    Darcs: **/_darcs, /_darcs/, **/.darcsrepo, */.darcsrepo/****/-darcs-backup, **/.darcs-temp-mail
    如果有特殊的原因不需要排除上述默认文件,可以将该值设置成false.

  • encoding
    读写需要被复制的资源文件时使用的字符集,默认是${project.build.sourceEncoding},打包时会使用该字符集将需要复制的资源文件重新编译。

  • propertiesEncoding
    读写属性配置文件时使用的字符集,如果未指定,则使用encoding指定的字符集。

  • nonFilteredFileExtensions
    资源文件复制时不需要重新编译的文件拓展名。

再回到我最开始的问题,在打包后进行资源文件复制时,重新将协议模板文件重新编译了一次,所以导致了协议默认文件格式损坏,因此,只要设置了nonFilteredFileExtension将pdf文件排除即可,在复制时不对其进行重新编译。

以上只是介绍了几个比较常用的属性,其他属性请参考官方文档的说明。

总结

虽然使用了很久的maven,但是更多是把它当作一个黑箱子使用,对其机制原理没有深入了解,官方文档也没怎么看过。说到底还是太菜,以后要省点刷视频的时间,多看看官方文档。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容