zoukankan      html  css  js  c++  java
  • maven 04-pom.xml构建设置

    • 在实际的开发项目中,基本有三种环境:
      • 自己的开发环境--dev
      • 内部的测试环境--test
      • 业务环境--product
    • 一般情况下都会准备出三套配置文件
    • 而后在将项目打包为.war文件之后希望可以根据不同的环境选择不同的配置属性(.properties)文件
    • Maven支持这样的动态选择的打包操作

    1、建立一个保存所有配置文件的源目录: src/main/profiles

    • dev:保存所有开发的相关环境资源配置
    • test:保存所有测试的相关环境资源配置
    • product:保存所有的线上环境的资源配置

    2、建立一个保存所有框架开发配置文件的源目录:src/main/resources

    • config/mybatis:保存所有mybatis的相关环境资源配置
    • config/shiro:保存所有shiro的相关环境资源配置
    • config/spring:保存所有spring的相关环境资源配置

    3、添加相应的配置文件

    src/
    └── main
        ├── java
        ├── profiles
        │   ├── dev
        │   │   ├── conf
        │   │   │   └── database.properties
        │   │   ├── log4.properties
        │   │   └── logback.xml
        │   ├── product
        │   │   ├── conf
        │   │   │   └── database.properties
        │   │   ├── log4.properties
        │   │   └── logback.xml
        │   └── test
        │       ├── conf
        │       │   └── database.properties
        │       ├── log4.properties
        │       └── logback.xml
        ├── resources
        │   └── config
        │       ├── mybatis
        │       │   └── mybatis.cfg.xml
        │       ├── shiro
        │       │   └── spring-shiro.xml
        │       └── spring
        │           ├── sping-mvc.xml
        │           └── spring-common.xml
        └── webapp
            └── WEB-INF
                └── web.xml
    

    4、修改pom.xml配置文件

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>cn.liang</groupId>
    	<artifactId>m2war</artifactId>
    	<packaging>war</packaging>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>m2war Maven Webapp</name>
    	<url>http://maven.apache.org</url>
    	<properties>
    	    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    	    <jdk.version>1.8</jdk.version>
    	    <junit.version>4.12</junit.version>
    	    <spring.version>5.1.1.RELEASE</spring.version>
    	    <servlet.version>4.0.1</servlet.version>
    	    <profiles.dir>src/main/profiles</profiles.dir>
    	    <resources.dir>src/main/resources</resources.dir>
      	</properties>
    	<dependencies>
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>${junit.version}</version>
    			<scope>test</scope>
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>javax.servlet-api</artifactId>
    			<version>${servlet.version}</version>
    		</dependency>
    	</dependencies>
    	<profiles>	<!-- 明确的描述出要使用的不同环境配置文件  -->
    		<profile>
    			<id>dev</id>	<!-- 本配置文件的编号,一般会与文件目录重名  -->
    			<properties>	<!-- 此配置项对应的路径  -->
    				<profile.dir>${profiles.dir}/dev</profile.dir>
    			</properties>
    			<activation>	<!-- 如果没有指定profile,默认使用该配置  -->
    				<activeByDefault>true</activeByDefault>
    			</activation>
    		</profile>
    		<profile>
    			<id>test</id>
    			<properties>
    				<profile.dir>${profiles.dir}/test</profile.dir>
    			</properties>
    			<activation>
    				<activeByDefault>false</activeByDefault>
    			</activation>
    		</profile>
    		<profile>
    			<id>product</id>
    			<properties>
    				<profile.dir>${profiles.dir}/product</profile.dir>
    			</properties>
    			<activation>
    				<activeByDefault>false</activeByDefault>
    			</activation>
    		</profile>
    	</profiles>
    	<build>
    		<finalName>m2war</finalName>
    		<plugins>
      		<plugin>
      			<groupId>org.apache.maven.plugins</groupId>
      			<artifactId>maven-compiler-plugin</artifactId>
      			<configuration>
      				<source>${jdk.version}</source>
      				<target>${jdk.version}</target>
      				<encode>${project.build.sourceEncoding}</encode>
      			</configuration>
      		</plugin>
      	</plugins>
      	<defaultGoal>package</defaultGoal>	<!-- 打包的时候使用  -->
      	<resources>	<!-- 需要输出的配置文件  -->
      		<resource>
      			<directory>${resources.dir}</directory>
      			<filtering>false</filtering>
      		</resource>
      		<resource>
      			<directory>${profile.dir}</directory>	<!-- 注意!profile.dir指的是profile的参数,并非properties参数  -->
      			<filtering>false</filtering>
      		</resource>
      	</resources>
    	</build>
    </project>
    

    5、配置完成后进行打包处理,生成默认的dev环境war包

    6、如果使用test环境的war包,需要指定Profiles为test

    7、在进行资源配置的时候可以配置必须包含的内容以及排除的内容

    <resources>
        <resource>
            <directory>${resources.dir}</directory>
            <filtering>false</filtering>
            <includes>
                <include>**/*.xml</include>
            </includes>
            <excludes>
                <exclude>**/*.properties</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>${profile.dir}</directory>
            <filtering>false</filtering>
        </resource>
    </resources>
    

    打包处理后发现在classes/config目录下只保留了xml文件

    classes/
    ├── conf
    │   └── database.properties
    ├── config
    │   ├── mybatis
    │   │   └── mybatis.cfg.xml
    │   ├── shiro
    │   │   └── spring-shiro.xml
    │   └── spring
    │       ├── sping-mvc.xml
    │       └── spring-common.xml
    ├── log4.properties
    └── logback.xml
    
  • 相关阅读:
    GOOGLE's Olympics Symbols
    写在九月的第一篇
    有点沉重的topic:出国,考研,工作?
    放弃的选择
    面临选择
    中秋节快乐!
    我该做一些改变
    使用Docker搭建一个WordPress博客
    三层架构小示例
    SQL联合查询
  • 原文地址:https://www.cnblogs.com/liangjingfu/p/9910236.html
Copyright © 2011-2022 走看看