博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
“Maven官方用户入门指南”翻译之五
阅读量:4112 次
发布时间:2019-05-25

本文共 2108 字,大约阅读时间需要 7 分钟。

如何往jar中添加资源文件?

另外一个常见需求就是在不修改pom文件的前提下在打包的时候把资源文件打进去。针对这个需求maven又一次基于标准目录结构,也就是说基于这个公约你可以在打包的时候很容易的打进去。

在上述例子中我们增加了${basedir}/src/main/resources目录来放置一些希望打包打进去的资源文件。maven的规则是任何在${basedir}/src/main/resources 放置的文件在打包的时候都会原封不动的安装这个目录结构打包进去如下所示:

 

my-app|-- pom.xml`-- src    |-- main    |   |-- java    |   |   `-- com    |   |       `-- mycompany    |   |           `-- app    |   |               `-- App.java    |   `-- resources    |       `-- META-INF    |           `-- application.properties    `-- test        `-- java            `-- com                `-- mycompany                    `-- app                        `-- AppTest.java

上面你可以看到在 META-INF 目录里有个application.properties文件,如果你解压这个jar你会看到如下目录结构:

 

 

|-- META-INF|   |-- MANIFEST.MF|   |-- application.properties|   `-- maven|       `-- com.mycompany.app|           `-- my-app|               |-- pom.properties|               `-- pom.xml`-- com    `-- mycompany        `-- app            `-- App.class

 你可以看到 ${basedir}/src/main/resources 里面的内容在jar中可以被找到在META-INF目录下。同时你也发现了META-INF/MANIFEST.MF 、 pom.xml 和pom.properties,这些文件是在maven打包的时候自动生成的。当然你也可以生成自己的manifest 文件,如果你不指定的话那么maven会生成默认的(你也可以修改manifest,后面会说到这个事)。pom.xml 和 pom.properties被maven打入jar中包括一些自身的描述信息,一些元数据信息同时也可以给你自己的三方程序使用。一个简单的需求就是查看工程版本号。操作pom文件可能需要maven的工具包,不过操作属性文件直接可以基于标准java api来操作,他的内容如下:

#Generated by Maven#Tue Oct 04 15:43:21 GMT-05:00 2005version=1.0-SNAPSHOTgroupId=com.mycompany.appartifactId=my-app

单元测试的资源文件同样遵循上述标准,不过需要放在${basedir}/src/test/resources目录下。这样的话一个标准的目录结构如下所示:

my-app|-- pom.xml`-- src    |-- main    |   |-- java    |   |   `-- com    |   |       `-- mycompany    |   |           `-- app    |   |               `-- App.java    |   `-- resources    |       `-- META-INF    |           |-- application.properties    `-- test        |-- java        |   `-- com        |       `-- mycompany        |           `-- app        |               `-- AppTest.java        `-- resources            `-- test.properties

单元测试中你可以引用下述片段去访问测试用的资源文件:

...// Retrieve resourceInputStream is = getClass().getResourceAsStream( "/test.properties" );// Do something with the resource...

 

转载地址:http://ksqsi.baihongyu.com/

你可能感兴趣的文章
Codeforces Round #324 (Div. 2) B. Kolya and Tanya 思维题 数论
查看>>
Poj 3977 Subset 折半枚举 超大背包
查看>>
poj 2549 Sumsets 折半枚举
查看>>
poj 3276 Face The Right Way 挑战150 反转
查看>>
poj 3279 Fliptile 反转
查看>>
poj 3185 The Water Bowls 反转(开关)
查看>>
poj 1930 Dead Fraction 循环小数的处理
查看>>
poj 3421 X-factor Chains 素数筛选 因子分解
查看>>
poj 3292 Semi-prime H-numbers 素数变形+打表+筛选法
查看>>
poj 3468 A Simple Problem with Integers 模板题 线段树 懒惰标记
查看>>
POJ 3264 Balanced Lineup 线段树 维护区间最大值和最小值 建树
查看>>
poj 3368 Frequent values 线段树 节点值得变化
查看>>
poj 1201 Intervals 线段树+贪心
查看>>
hdu 2602 Bone Collector 0-1背包;
查看>>
CF #318 (Div. 2) C. Bear and Poker 唯一分解定理
查看>>
CF#318 (Div. 2)B. Bear and Three Musketeers 暴力 复杂度分析
查看>>
hdu 1421
查看>>
poj 3041 Asteroids 二分匹配 匈牙利算法 模板题
查看>>
poj 3281 Dining 最大流dinic 模板题
查看>>
poj 3469 Dual Core CPU 最大流建图思想 dinic 弧优化很重要
查看>>