應用場景
1:一個maven構建的web工程。
2:有開發環境,有生產環境。
3:將工程打包成war。
4:自動部署到Tomcat上。
構建工程
用Eclipse構建一個Maven的web工程。
首先創建一個maven的web工程,參考鏈接:http://www.cnblogs.com/noteless/p/5213075.html
使用Plugin打包成war
最新plugin列表以及說明的URL:http://maven.apache.org/plugins/index.html
自動部署到tomcat上
修改tomcat的tomcat-user.xml文件
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat" password="12345678" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
方法一
修改工程的pom.xml文件,增加如下plugin
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<username>tomcat</username>
<password>12345678</password>
<path>/yiibaiWebApp</path>
</configuration>
</plugin>
方法二
這裏直接把用戶名和密碼寫在了pom.xml的文件裏,還有另外一種處理方式就是將用戶名和密碼寫在maven的setting.xml文件裏。
setting.xml文件中添加配置信息:
<server>
<id>Tomcat7</id>
<username>tomcat</username>
<password>12345678</password>
</server>
pom.xml文件中的配置:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 注意此處的url -->
<url>http://localhost:8080/manager/text</url>
<!-- 此處的名字必須和setting.xml中配置的ID一致 -->
<server>Tomcat7</server>
<!-- 此處的名字是項目發佈的工程名-->
<path>/webMaven</path>
</configuration>
</plugin>
開發環境的配置文件在:
src/main/resources/dev/config.properties
A.name=DEV A Name
A.title=DEV A Title
B.name=DEV B Name
B.title=DEV B Title
生產環境的配置文件在:
src/main/resources/product/config.properties
A.name=PRODUCT A Name
A.title=PRODUCT A Title
B.name=PRODUCT B Name
B.title=PRODUCT B Title
正式的配置文件:
src/main/resources/configA.properties
A.name=${A.name}
A.title=${A.title}
src/main/resources/configB.properties
B.name=${B.name}
B.title=${B.title}
在<build>
內容裏增加<resources>
部分內容
<resources>
<!-- 先指定 src/main/resources下所有文件及文件夾爲資源文件,排除了dev和product文件夾下的內容 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>dev/*</exclude>
<exclude>product/*</exclude>
</excludes>
</resource>
<!-- 設置對configA.properties,configB.properties進行過慮,即這些文件中的${key}會被替換掉爲真正的值 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>configA.properties</include>
<include>configB.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
增加profiles,針對不同的環境設置不同的值。
<profiles>
<profile>
<id>dev</id>
<!-- 默認激活開發配製,使用config-dev.properties來替換設置過慮的資源文件中的${key} -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<filters>
<filter>src/main/resources/dev/config.properties</filter>
</filters>
</build>
</profile>
<profile>
<id>product</id>
<build>
<filters>
<filter>src/main/resources/product/config.properties</filter>
</filters>
</build>
</profile>
</profiles>
修改index.jsp
將properties的內容打印出來!!
maven tomcat7:deploy -P dev
啓用dev的配置。
訪問index.jsp發現properties的內容打印出來是DEV相關的。
maven tomcat7:deploy -P product
訪問index.jsp,發現打印出來的內容是product相關的。
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.test</groupId>
<artifactId>webMaven</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>webMaven Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<!-- 設置JDK的版本,編譯版本和運行版本,可以使用Plugin的模式 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- 指定編碼 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>webMaven</finalName>
<resources>
<!-- 先指定 src/main/resources下所有文件及文件夾爲資源文件 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>dev/*</exclude>
<exclude>product/*</exclude>
</excludes>
</resource>
<!-- 設置對configA.properties,configB.properties進行過慮,即這些文件中的${key}會被替換掉爲真正的值 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>configA.properties</include>
<include>configB.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<!-- 生成war的Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<!-- 刪除了Log4j的jar包 -->
<warSourceExcludes>WEB-INF/lib/log4j-${log4j.version}.jar</warSourceExcludes>
</configuration>
</plugin>
<!-- 利用Maven直接將工程發佈到Tomcat上,執行的命令(goal)是 tomcat7:deploy,重新部署使用tomcat7:redeploy -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 注意此處的url -->
<url>http://localhost:8080/manager/text</url>
<!--
可以將用戶名和密碼的信息配置在maven的setting.xml中
格式如下:
<server>
<id>Tomcat7</id>
<username>tomcat</username>
<password>12345678</password>
</server>
-->
<!-- 此處的名字必須和setting.xml中配置的ID一致 -->
<!--
<server>Tomcat7</server>
-->
<!-- 可以直接將用戶名和密碼寫在部署文件上 -->
<username>tomcat</username>
<password>12345678</password>
<!-- 此處的名字是項目發佈的工程名-->
<path>/webMaven</path>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>dev</id>
<!-- 默認激活開發配製,使用dev/config.properties來替換設置過慮的資源文件中的${key} -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<filters>
<filter>src/main/resources/dev/config.properties</filter>
</filters>
</build>
</profile>
<profile>
<id>product</id>
<build>
<filters>
<filter>src/main/resources/product/config.properties</filter>
</filters>
</build>
</profile>
</profiles>
</project>
這樣,我們第一個實戰的例子就完成!
以後有新的實戰場景會繼續添加!!