1. 程式人生 > >maven 04-pom.xml構建設定

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