Maven根据不同环境打包不同配置文件
2017-12-18 17:04
836 查看
开发项目时会遇到这个问题:开发环境,测试环境,生产环境的配置文件不同,打包时经常要手动更改配置文件,更改的少还可以接受,但是如果需要更多个配置文件,手动的方法就显得非常笨重了。
下面介绍一种方法,利用Maven插件来打包不同环境的配置文件。我们用到的是maven-war-plugin这个插件。
首先贴出pom文件设置的部分:
打包命令:
mvn clean install -Denv=int
跳过test:
mvn clean install -Denv=int -Dmaven.test.skip=true
传递一个参数-Denv=tst,其实就是传递了个env的参数,然后maven就会根据这个参数值,去激活相应的属性,就是控制激活哪个。
-Denv=int传递进去之后就会找到env,value为int的并自动激活int包含的属性,
也就
这是一个判断条件,类似if(env=local){…}
类似java一样,比如将多个逻辑组合到一个方法,-D就如同根据参数在这个方法里面进行不同的逻辑判断,
-P就如同将多个逻辑放到不同的方法,根据-P参数进行判断具体调用哪个方法
下面介绍一种方法,利用Maven插件来打包不同环境的配置文件。我们用到的是maven-war-plugin这个插件。
首先贴出pom文件设置的部分:
<profiles> <profile> <id>local</id> <activation> <!--默认开发环境--> <activeByDefault>true</activeByDefault> <property> <name>env</name> <value>local</value> </property> </activation> <properties> <build.environment>local</build.environment> <!--<tomcat.server>localhost-tomcat</tomcat.server>--> <!--<tomcat.url>http://localhost:8080/manager/text</tomcat.url>--> </properties> </profile> <profile> <id>test</id> <activation> <property> <name>env</name> <value>test</value> </property> </activation> <properties> <build.e 4000 nvironment>test</build.environment> </properties> </profile> <profile> <id>int</id> <activation> <property> <name>env</name> <value>int</value> </property> </activation> <properties> <build.environment>int</build.environment> </properties> </profile> <profile> <id>prod</id> <activation> <property> <name>env</name> <value>prod</value> </property> </activation> <properties> <build.environment>prod</build.environment> </properties> </profile> </profiles>
<build> <resources> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>env/${build.environment}</directory> </resource> </resources> <plugins> <!--<plugin>--> <!--<groupId>org.mortbay.jetty</groupId>--> <!--<artifactId>maven-jetty-plugin</artifactId>--> <!--<version>6.1.7</version>--> <!--<configuration>--> <!--<connectors>--> <!--<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">--> <!--<port>8888</port>--> <!--<maxIdleTime>30000</maxIdleTime>--> <!--</connector>--> <!--</connectors>--> <!--<webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}</webAppSourceDirectory>--> <!--<contextPath>/</contextPath>--> <!--</configuration>--> <!--</plugin>--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <webXml>src/main/webapp/WEB-INF/web.xml</webXml> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> </plugin> </plugins> </build>
打包命令:
mvn clean install -Denv=int
跳过test:
mvn clean install -Denv=int -Dmaven.test.skip=true
传递一个参数-Denv=tst,其实就是传递了个env的参数,然后maven就会根据这个参数值,去激活相应的属性,就是控制激活哪个。
-Denv=int传递进去之后就会找到env,value为int的并自动激活int包含的属性,
也就
<build.environment>int</build.environment>这个属性.然后接下来 整个项目就会从int这个 profile里面拿参数去用了.
这是一个判断条件,类似if(env=local){…}
类似java一样,比如将多个逻辑组合到一个方法,-D就如同根据参数在这个方法里面进行不同的逻辑判断,
-P就如同将多个逻辑放到不同的方法,根据-P参数进行判断具体调用哪个方法
相关文章推荐
- Maven根据不同的环境打包配置文件
- Maven根据不同环境打包不同配置文件的方法
- 【小平工作日志】Maven根据不同环境打包, 获取不同的配置文件
- maven根据不同的运行环境,打包不同的配置文件
- Maven_根据不同个环境打包, 获取不同的配置文件等等
- maven根据不同的运行环境,打包不同的配置文件
- Maven根据不同环境打包不同配置文件
- Maven根据不同环境打包不同配置文件
- Maven根据不同环境打包不同配置文件
- Maven根据不同环境打包不同配置文件
- Maven根据不同环境打包不同配置文件
- Maven根据不同环境打包不同配置文件
- Maven根据不同个环境打包, 获取不同的配置文件等等
- Maven根据不同个环境打包, 获取不同的配置文件
- maven 根据环境打包不同配置文件
- Maven根据不同个环境打包, 获取不同的配置文件
- Maven根据不同个环境打包, 获取不同的配置文件等等
- Maven根据不同个环境打包, 获取不同的配置文件等等
- Maven根据Profile读取不同配置环境配置文件
- Maven根据Profile读取不同配置环境配置文件