利用maven-war-plugin實現不同環境下的配置文件

我這是一個標準的maven的目錄結構,配置文件都在src/main/resources根目錄下。因爲要改成多環境的配置,所以只有properties的文件改變了(公共配置可以原地不動)

1.將配置文件放到不同的文件夾下

2.創建2個不同的profile,一個是生產環境配置(prod),一個是開發環境配置(dev),分別與步驟1中的兩個文件夾名對應一致

<profiles>
	<!-- 不同環境的配置代碼 -->
	<profile>
		<id>dev</id>
		<properties>
			<package.environment>dev</package.environment>
		</properties>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
	</profile>
	<profile>
		<id>prod</id>
		<properties>
			<package.environment>prod</package.environment>
		</properties>
	</profile>
</profiles>

3.設置變量

<package.environment>dev</package.environment>

4.對resources下的目錄進行處理

<resources>
	<resource>
		<directory>src/main/resources</directory>
		<filtering>false</filtering>
		<excludes>
			<exclude>prod/*</exclude>
			<exclude>dev/*</exclude>
		</excludes>
	</resource>
</resources>

上面那個filtering,之前看別人的示例是true。發現這樣的話,springContext.xml中類似{url}、{filters}(druid連接池的屬性,本來用prod/jdbc.properties和dev/jdbc.properties的配置)就變成了pom.xml中url的屬性值了(替換成了http://maven.apache.org

5. maven-war-plugin的配置

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-war-plugin</artifactId>
	<version>2.3</version>
	<configuration>
		<archive>
			<addMavenDescriptor>false</addMavenDescriptor>
		</archive>
		<warName>${project.artifactId}</warName>
		<webResources>
			<resource>
				<directory>src/main/resources/${package.environment}</directory>
				<targetPath>WEB-INF/classes</targetPath>
				<filtering>true</filtering>
			</resource>
		</webResources>
	</configuration>
</plugin>

上面的${project.artifactId}是pom.xml的內置屬性,${package.environment}是定義的屬性

6.打包

打包之前別忘了update下project,因爲pom.xml已經被修改過了

選擇項目路徑,填好打包命令(我是用的eclipse,所以省略了mvn的字樣)

package -P dev 就是用開發環境的配置,package -P prod就是用生產環境的配置

打包成功後,看包結構,雖然也有dev/prod兩個文件,但在src/main/resources根目錄下已經生成了那三個配置文件,而我web.xml也只是加載了 src/main/resources根目錄的配置文件,所以dev和prod對項目本身沒有衝突

 

 

=================================================================

但是這樣的話,eclipse在本地調試的話,沒法用tomcat啓動,所以改成用maven的tomcat來進行啓動

(tomcat7的命令是 tomcat7:run)

1.配置maven的tomcat插件

<plugin>
	<groupId>org.apache.tomcat.maven</groupId>
	<artifactId>tomcat7-maven-plugin</artifactId>
	<version>2.2</version>
	<configuration>
		<port>80</port>
		<path>/fitness</path>
		<uriEncoding>UTF-8</uriEncoding>
		<server>tomcat7</server>
	</configuration>
</plugin>

上面我用到了80的端口,用的tomcat7

2.在依賴中不能添加tomcat的依賴包

3.對javax.servlet-api和javaee-api的scope要加限制,限制成provided

如下:

這樣通過命令就能啓動了

參考:https://blog.csdn.net/chenjing928/article/details/79883104

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章