zoukankan      html  css  js  c++  java
  • Maven构建灵活配置文件

    本文解决以下问题:

    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参数,将会打印出不同的内容。

     

     

     

     

     

     

  • 相关阅读:
    bs4解析错误之 bs4 FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml.
    UI自动化之selenium元素定位不到问题的原因有哪几种?
    selenium定位:出现Message: element not interactable 元素不可交互的问题解决方案
    JS--编码规范
    JS操作数组-2
    JS-数组操作3
    JS操作数组
    用JS解决url地址中参数乱码的问题
    数组去重--ES5和ES6
    选择排序
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/5561944.html
Copyright © 2011-2022 走看看