Maven构建灵活配置文件
本文解决以下问题:
- Maven下面启动Main函数;
- 配置JDK版本
- 如何配置文件,在开发部署测试各个不同版本间无缝切换配置文件;
启动Main函数
Maven默认是不支持Main函数程序,需要在pom文件中添加如下插件(plugin)才可以。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>profileFlex.profileFlex.App</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置JDK版本
可以在POM以及Setting文件两个地方进行配置,但是其实这是一个全局性的配置,一般都是在settings文件中进行设置:
Settings配置
在Profiles下面添加如下的profile即可引入jdk-1.7(我是用的LUNA版本,默认是JDK1.5)
<profile>
<id>jdk-1.7</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>
POM配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
配置Profile,动态发布配置文件
原理是配置文件使用maven属性进行占位,然后在pom文件中定义多个profile文件,每隔profile文件中定义属性(占位符)值,可以定义开发环境,测试环境以及部署环境的值。在执行maven的时候,maven将会根据指定的参数来动态填充配置文件信息。
定义配置文件
在src/main/resources下面添加配置文件config.properites,内容为:
name=${pf.name}
配置资源文件过滤器
Maven属性只有在maven才能进行填充,所以需要在resources阶段对资源文件进行处理,这是使用到了过滤器配置:
<build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
这是通知Maven,在处理资源文件阶段,需要对resources文件夹下面的文件进行处理,使用maven属性值进行填充;
定义Profile文件
需要定义Maven属性值,这样才能够在编译阶段,根据指定的profile节点名称进行动态填充配置文件。
<profiles>
<profile>
<id>test</id>
<properties>
<pf.name>Jim</pf.name>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<pf.name>Jerry</pf.name>
</properties>
</profile>
</profiles>
测试程序
最后我们写一段小的测试程序
测试代码
public
class App {
public
static
void main(String[] args) {
Properties p = new Properties();
try {
InputStream fis = App.class.getClassLoader().getResourceAsStream("config.properites");
p.load(fis);
String
name = p.getProperty("name");
System.out.println("The name is: " + name);
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行指令
右键pom文件,run as maven build…,在goals里面敲入:
clean compile -Pdev exec:java -Dexec.mainClass="profileFlex.profileFlex.App"
-Pdev就是指定profile参数为dev;还可以使用-Ptest
-Dexec就是执行Java代码,mainClass指定入口的Main所在的类
可以看到指定不同的-P参数,将会打印出不同的内容。
Maven构建灵活配置文件的更多相关文章
- 01 Maven构建的项目中,把.xml等配置文件添加到编译目录
Maven构建的项目,默认只会把src/main/resources目录下的xml配置文件添加到编译目录. 如果需要把src/main/java目录下的xml配置文件也添加到编译目录,需要在pom.x ...
- Maven 构建配置文件
什么是构建配置文件? 生成配置文件是一组可以用来设置或覆盖 Maven 构建配置值的默认值.使用生成配置文件,你可以针对不同的环境,如:生产V/S开发环境自定义构建. 配置文件中指定 pom.xml ...
- Maven学习(十四)-----Maven 构建配置文件
Maven 构建配置文件 什么是构建配置文件? 生成配置文件是一组可以用来设置或覆盖 Maven 构建配置值的默认值.使用生成配置文件,你可以针对不同的环境,如:生产V/S开发环境自定义构建. 配置文 ...
- Java-Maven-Runoob:Maven 构建配置文件
ylbtech-Java-Maven-Runoob:Maven 构建配置文件 1.返回顶部 1. Maven 构建配置文件 构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认 ...
- maven 学习---Maven 构建配置文件
什么是构建配置文件? 构建配置文件是一组配置的集合,用来设置或者覆盖 Maven 构建的默认配置.使用构建配置文件,可以为不同的环境定制构建过程,例如 Producation 和 Developmen ...
- 【第五篇】-Maven 构建配置文件之Spring Cloud直播商城 b2b2c电子商务技术总结
Maven 构建配置文件 构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认值. 使用构建配置文件,你可以为不同的环境,比如说生产环境(Production)和开发(Deve ...
- Spring 3整合Quartz 1实现定时任务一:常规整合(基于maven构建)
Spring配置Quartz例子(基于maven构建) 在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类 ...
- 基于Maven构建的Spring+Mybatis项目
项目的目录结构: 1.基于Maven构建Web项目 参考:基于Maven构建Web项目 2.导入项目依赖 Spring 核心容器(Beans.Core.Context.Context support. ...
- Dubbo入门到精通学习笔记(二):Dubbo管理控制台、使用Maven构建Dubbo的jar包、在Linux上部署Dubbo privider服务(shell脚本)、部署consumer服务
文章目录 Dubbo管理控制台 1.Dubbo管理控制台的主要作用: 2.管理控制台主要包含: 3.管理控制台版本: 安装 Dubbo 管理控制台 使用Maven构建Dubbo服务的可执行jar包 D ...
随机推荐
- [Whole Web, Nods.js, PM2] Passing environment variables to node.js using pm2
learn how to pass environment variables to your node.js app using the pm2 config file. This is usefu ...
- iostat来对linux硬盘IO性能进行了解
http://www.php-oa.com/2009/02/03/iostat.html
- launchMode使用详解
launchMode是很基础但是也很容易被忽视的问题,一个高性能的手机App不仅仅是代码完成的非常棒,也包括launchMode的合理使用.一个应用中,到底哪些Activity应该始终保持一个实例,哪 ...
- struts1与struts2的区别
Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...
- 无法打开登录所请求的数据库 "XXX"。登录失败。 用户 'NT AUTHORITY\SYSTEM' 登录失败。
1.打开数据库安全性-登录名 2.选择NT AUTHORITY\SYSTEM右键属性 3.选择服务器角色勾选sysadmin选项保存
- c语言学习之基础知识点介绍(十七):写入读取结构体、数组、结构体数组
一.结构体的写入和读取 //写入结构体 FILE *fp = fopen("/Users/ios/Desktop/1.data", "w"); if (fp) ...
- onActivityResult不被执行的问题。
1.首先,返回的Activity必须使用startActivityForResult启动. 2.其次,在返回的Activity中必须保证setResult方法在finish方法之前执行,否则onAct ...
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...
- Deep Learning 学习随记(三)Softmax regression
讲义中的第四章,讲的是Softmax 回归.softmax回归是logistic回归的泛化版,先来回顾下logistic回归. logistic回归: 训练集为{(x(1),y(1)),...,(x( ...
- 关于MDCSwipeToChooseView的应用
本人因为项目中某个页面的功能需要,用到了MDCSwipeToChooseView,就在网上查阅了相关的资料,资源有很多,但应该都是同一个人上传的,code4还有git上都有,但下载demo下来后运行不 ...