maven-resourse-plugin使用总结

文章目录

  • 一、简介
  • 二、使用场景

一、简介

更详细总结参考: resource插件理解


  • 各goal的作用
resource:resource

将main代码的resources拷贝到main.output.directory,具体是project.build.outputDirectory
默认在maven的process-resources周期执行

resources:testResources

将test代码的resources拷贝到test.output.directory,具体是project.build.testOutputDirectory
默认在maven的process-test-resources周期执行

resources:copy-resources 

资源拷贝,需要指定资源位置和目标位置

mvn resources:help -Ddetail=true

查看resources插件的使用介绍


  • 变量替换时的分隔符定义

格式为beginToken*endToken, 如果beginToken和endToken一样,可以缩写为tokentokentoken

默认分隔符定义如下

  <delimiters><delimiter>${*}delimiter><delimiter>@delimiter>delimiters>

可以在project.properties和resource-plugin的configuration里配置


  • 指定resource时的编码

在project.properties或resources插件的configuration里配置

{project.build.sourceEncoding}

  • filters的作用及组成

resources.resources.filters.filter设置,作用是用来替换变量时作为变量定义源

filters文件包括: 显式在filer定义的文件、SystemProperties、project.properties

<build><filters><filter>src/main/config/${running.env}/zookeeper.properties</filter><filter>src/main/config/${running.env}/xdcs.properties</filter><filter>src/main/config/${running.env}/maven-test.properties</filter><filter>src/main/config/${running.env}/web.properties</filter></filters>
</build>

  • include和exclusion使用注意事项

指定resource时,默认包含directory的所有资源,即**/*.*

如果仅部分需要当成resource,通过include和exclusion来指定

src/main/resourcesapplication.propertiestrue


二、使用场景

  • maven默认周期resources的处理

resources:resources将mainResource拷贝到target/classes目录
resources:testResources将testResource拷贝到target/test-classes目录

特别地,maven的surefire:test执行时相同位置的resource优先取test-classes目录的,找不到对应的resources才会去找classes目录下去找


  • 指定文件类型不进行变量替换
    <resources><resource><directory>src/main/resourcesdirectory><filtering>truefiltering><nonFilteredFileExtensions><nonFilteredFileExtension>jpgnonFilteredFileExtension><nonFilteredFileExtension>gifnonFilteredFileExtension><nonFilteredFileExtension>pngnonFilteredFileExtension>nonFilteredFileExtensions>resource>resources>

  • 用单独的插件命令结合命令选项 -X -e

这点非常有用,特别是当build结果达不到预期时debug使用效果极佳。

能看到具体过程信息,

插件当前版本及配置项信息

当前生效的配置信息

当前生效的properties信息

当前build过程的详细信息等

mvn resources:testResources -X -e
mvn resources:resources -X -e

  • resource和testResource阶段的配置差异

这点非常重要,resource和testResource这两个goal配置定义的地方不一样,千万别搞错

比如说src/test/resources下的配置文件里也要通过@zok.node@这样变量替换,就只能在testResources标签下设置

<resources><resource><directory>src/main/resourcesdirectory><filtering>truefiltering>resource>resources><testResources><testResource><directory>src/test/resourcesdirectory><filtering>truefiltering>testResource>testResources>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部