maven 04-pom.xml構建設定
阿新 • • 發佈:2018-11-05
- 在實際的開發專案中,基本有三種環境:
- 自己的開發環境--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