本文解决以下问题:

  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构建灵活配置文件的更多相关文章

  1. 01 Maven构建的项目中,把.xml等配置文件添加到编译目录

    Maven构建的项目,默认只会把src/main/resources目录下的xml配置文件添加到编译目录. 如果需要把src/main/java目录下的xml配置文件也添加到编译目录,需要在pom.x ...

  2. Maven 构建配置文件

    什么是构建配置文件? 生成配置文件是一组可以用来设置或覆盖 Maven 构建配置值的默认值.使用生成配置文件,你可以针对不同的环境,如:生产V/S开发环境自定义构建. 配置文件中指定 pom.xml ...

  3. Maven学习(十四)-----Maven 构建配置文件

    Maven 构建配置文件 什么是构建配置文件? 生成配置文件是一组可以用来设置或覆盖 Maven 构建配置值的默认值.使用生成配置文件,你可以针对不同的环境,如:生产V/S开发环境自定义构建. 配置文 ...

  4. Java-Maven-Runoob:Maven 构建配置文件

    ylbtech-Java-Maven-Runoob:Maven 构建配置文件 1.返回顶部 1. Maven 构建配置文件 构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认 ...

  5. maven 学习---Maven 构建配置文件

    什么是构建配置文件? 构建配置文件是一组配置的集合,用来设置或者覆盖 Maven 构建的默认配置.使用构建配置文件,可以为不同的环境定制构建过程,例如 Producation 和 Developmen ...

  6. 【第五篇】-Maven 构建配置文件之Spring Cloud直播商城 b2b2c电子商务技术总结

    Maven 构建配置文件 构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认值. 使用构建配置文件,你可以为不同的环境,比如说生产环境(Production)和开发(Deve ...

  7. Spring 3整合Quartz 1实现定时任务一:常规整合(基于maven构建)

    Spring配置Quartz例子(基于maven构建) 在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类 ...

  8. 基于Maven构建的Spring+Mybatis项目

    项目的目录结构: 1.基于Maven构建Web项目 参考:基于Maven构建Web项目 2.导入项目依赖 Spring 核心容器(Beans.Core.Context.Context support. ...

  9. Dubbo入门到精通学习笔记(二):Dubbo管理控制台、使用Maven构建Dubbo的jar包、在Linux上部署Dubbo privider服务(shell脚本)、部署consumer服务

    文章目录 Dubbo管理控制台 1.Dubbo管理控制台的主要作用: 2.管理控制台主要包含: 3.管理控制台版本: 安装 Dubbo 管理控制台 使用Maven构建Dubbo服务的可执行jar包 D ...

随机推荐

  1. (step6.3.4)hdu 1151(Air Raid——最小路径覆盖)

    题意:     一个镇里所有的路都是单向路且不会组成回路. 派一些伞兵去那个镇里,要到达所有的路口,有一些或者没有伞兵可以不去那些路口,只要其他人能完成这个任务.每个在一个路口着陆了的伞兵可以沿着街去 ...

  2. jqgrid表格列动态加载的实现

    选中几个测点名,在表格中就显示几列. 具体代码如下: function reloadGrid(postData){ $('#gridTable').jqGrid('GridUnload'); var ...

  3. [GIF] GIF Loop Coder - Introduction

    Introducing the program, GIF Loop Coder, which allows you to make looping animated gifs (and other t ...

  4. 图解如何用U盘重装系统

    第一类方法: 原生U盘安装,本工具制作完的U盘启动菜单含Windows7操作系统安装功能,使用本功能可以将Win7系统完美移植到你的U盘中.本功能不用进PE不用虚拟光驱,不受FAT32和NTFS文件系 ...

  5. 截获导航控制器系统返回按钮的点击pop及右滑pop事件

    前几天看了@栾小布的一篇文章:Custom backBarButtonItem,在跟着做的时候我又顺便扩展了一些,写此文章的目的是为了总结一下自己所写的东西,方便以后翻看容易,同时也是自己入行iOS一 ...

  6. c语言,strcspn,在串中查找第一个给定字符集内容的段

    函数名: strcspn 功 能: 在串中查找第一个给定字符集内容的段 用 法: int strcspn(char *str1, char *str2); 程序例: #include <stdi ...

  7. kickstart安装

    1.生成ks.cfg 文件 安装Kickstart # yum install system-config-kickstart 8.2 在桌面环境下配置Kickstart 启动X Windows 环境 ...

  8. verilog中的function用法与例子

    函数的功能和任务的功能类似,但二者还存在很大的不同.在 Verilog HDL 语法中也存在函数的定义和调用. 1.函数的定义 函数通过关键词 function 和 endfunction 定义,不允 ...

  9. MVC中HtmlHelper用法大全参考

    MVC中HtmlHelper用法大全参考 解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web ...

  10. C# Flash 图片上传案例(结合网上腾讯头像上传Flash插件)

    之前遇到过很多次要上传类似头像图片这种功能需求,这次是要求弄一个flash插件上传图片 感谢主,一个偶然机会在网上找到了一个很好的腾讯头像修改的flash插件:插件下载 这个功能采用Ajax访问支持, ...