码迷,mamicode.com
首页 > 其他好文 > 详细

Maven构建灵活配置文件

时间:2016-06-05 23:04:28      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:

本文解决以下问题:

  1. Maven下面启动Main函数;
  2. 配置JDK版本
  3. 如何配置文件,在开发部署测试各个不同版本间无缝切换配置文件;
    1. 启动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>

  1. 配置JDK版本

可以在POM以及Setting文件两个地方进行配置,但是其实这是一个全局性的配置,一般都是在settings文件中进行设置:

  1. 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>

  1. 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>

?

  1. 配置Profile,动态发布配置文件

原理是配置文件使用maven属性进行占位,然后在pom文件中定义多个profile文件,每隔profile文件中定义属性(占位符)值,可以定义开发环境,测试环境以及部署环境的值。在执行maven的时候,maven将会根据指定的参数来动态填充配置文件信息。

  1. 定义配置文件

在src/main/resources下面添加配置文件config.properites,内容为:

name=${pf.name}

  1. 配置资源文件过滤器

Maven属性只有在maven才能进行填充,所以需要在resources阶段对资源文件进行处理,这是使用到了过滤器配置:

????<build>

????????<resources>

????????????<resource>

????????????????<directory>${project.basedir}/src/main/resources</directory>

????????????????<filtering>true</filtering>

????????????</resource>

????????</resources>

????</build>

这是通知Maven,在处理资源文件阶段,需要对resources文件夹下面的文件进行处理,使用maven属性值进行填充;

  1. 定义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>

  1. 测试程序

最后我们写一段小的测试程序

  1. 测试代码

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();

????????}

?

????}

}

  1. 执行指令

右键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构建灵活配置文件

标签:

原文地址:http://www.cnblogs.com/xiashiwendao/p/5561944.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!