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

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

如何过滤资源文件?

有时候资源文件中某一个属性值需要在构建时才指定。在maven中这个是通过在一个资源属性文件中引入 ${<property name>},,这个属性可以在pom文件中、settings.xml中、自定义属性文件或者一个系统属性。

在maven中构建拷贝资源文件的时候只需要在pom文件中对指定的资源目录设置filtering 为true即可:

 

4.0.0
com.mycompany.app
my-app
1.0-SNAPSHOT
jar
Maven Quick Start Archetype
http://maven.apache.org
junit
junit
3.8.1
test
src/main/resources
true

你注意到你需要添加 buildresourcesresource 元素。在添加的时候我们显示的指明了本地资源目录 src/main/resources。其实上述信息都是默认有的,只不过默认的时候filtering 值为false,那么我们不得不在pom中添加设置他为true。

引入一个在pom中定义的属性,这个属性名称就是xml的元素名称,pom作为xml的根元素。因此${pom.name}就代表工程的名称,${pom.version}就代表工程版本号,${pom.build.finalName}代表工程打包的jar文件名等等。需要注意的是有些pom的元素有默认值,这样就不需要我们显示的在pom文件中定义了。简单的说用户的settting.xml中定义的元素可以直接被使用,以settings开头(如: ${settings.localRepository} 标示用户本地资源路径)。

接着我们上面的例子,我们在 application.properties (在src/main/resources中放着)中添加一组将要的被使用到的属性:

 

# application.propertiesapplication.name=${pom.name}application.version=${pom.version}

弄好之后你可以执行下属命令(process-resources命令主要是资源拷贝和填充

 

 

mvn process-resources

命令之后你会看到application.properties 将会在target/classes(最终会打包到jar里)下出现,其内容如下:

 

 

# application.propertiesapplication.name=Maven Quick Start Archetypeapplication.version=1.0-SNAPSHOT

如果属性对在外部文件中定义的话你需要在pom中对此外部文件添加一个引用,首先我们创建一个src/main/filters/filter.properties:外部文件:

# filter.propertiesmy.filter.value=hello!

 接着我们把这个新文件加入到我们的pom文件中:

4.0.0
com.mycompany.app
my-app
1.0-SNAPSHOT
jar
Maven Quick Start Archetype
http://maven.apache.org
junit
junit
3.8.1
test
src/main/filters/filter.properties
src/main/resources
true

 接着我们在application.properties中引用其中的属性:

# application.propertiesapplication.name=${pom.name}application.version=${pom.version}message=${my.filter.value}

执行 mvn process-resources会把新的属性值填充到application.properties.中去。除了定义my.filter.value 值在外部资源文件中之外还有一种方式就是在pom文件中通过properties 来定义,这样可以达到同样的效果(src/main/filters/filter.properties将不会在被引用):

4.0.0
com.mycompany.app
my-app
1.0-SNAPSHOT
jar
Maven Quick Start Archetype
http://maven.apache.org
junit
junit
3.8.1
test
src/main/resources
true
hello

此外资源属性还可以从系统中获取,java属性比如(java.version 和 user.home),以及标致的java命令行格式 -D 的那种,接上例我们修改 application.properties如下:

# application.propertiesjava.version=${java.version}command.line.prop=${command.line.prop}

你执行下属命令(command.line.prop属性值在命令行中出现),application.properties中将被填充系统属性:

mvn process-resources "-Dcommand.line.prop=hello again"

 

 

 

 

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

你可能感兴趣的文章
驱动力3.0,动力全开~
查看>>
记CSDN访问量10万+
查看>>
Linux下Oracle数据库账户被锁:the account is locked问题的解决
查看>>
极客算法训练营学习笔记(一)
查看>>
记CSDN访问20万+
查看>>
Windows 环境下Webstorm 2020.3 版本在右下角找不到Git分支切换部件的一种解决方法
查看>>
Electron-Vue项目中遇到fs.rm is not a function问题的解决过程
查看>>
飞机换乘次数最少问题的两种解决方案
查看>>
有向无回路图的理解
查看>>
设计模式中英文汇总分类
查看>>
MFC实现五子棋游戏
查看>>
WPF实现蜘蛛纸牌游戏
查看>>
单例模式
查看>>
工厂方法模式
查看>>
模板方法模式
查看>>
数据结构之队列、栈
查看>>
数据结构之树
查看>>
数据结构之二叉树
查看>>
二叉树非递归遍历算法思悟
查看>>
红黑树算法思悟
查看>>