1. 程式人生 > >Maven打包,把配置檔案引用,打到外部

Maven打包,把配置檔案引用,打到外部

在SIT 環境測試的時候,因為伺服器環境和本地環境可能不同,會造成不少問題,所以會進行多次打包。而且配置檔案不同,所以每次打包都要修改配置檔案,十分麻煩。

maven打包可以把配置檔案引用打成外部的,這樣就可以把sit環境的配置丟到伺服器,然後每次打包動態選擇配置檔案引用地址,就很爽了。

1.maven,pom的配置,例如:

<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/xsd/maven-4.0.0.xsd"
>
<modelVersion>4.0.0</modelVersion> <parent> <artifactId>666</artifactId> <groupId>com.xxx</groupId> <version>0.1.0</version> </parent> <artifactId>xxx</artifactId> <packaging>war</packaging
>
<name>xxx</name> <description>xxxxxx</description> <build> <finalName>xxx</finalName> <resources> <resource> <directory>src/main/java</directory> <includes>
<include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**</include> </includes> <filtering>true</filtering> </resource> </resources> </build> <dependencies> <dependency> <groupId>ojdbc</groupId> <artifactId>ojdbc</artifactId> <version>12.1.0.1-atlassian-hosted</version> </dependency> </dependencies> <properties> <file.config.path-sit>這裡是sit配置路徑,例如:/project-sit/config/xxx/</file.config.path-sit> <file.config.path-prod>這裡是生產配置路徑,例如:/project-prod/config/xxx/</file.config.path-prod> </properties> <profiles> <!-- 開發環境 --> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <some.config.path> classpath:config/some.properties <jdbc.config.path> classpath:config/jdbc.properties </jdbc.config.path> </properties> </profile> <!-- Sit測試環境 --> <profile> <id>sit</id> <properties> <some.config.path> file:${file.config.path-sit}some.properties </some.config.path> <jdbc.config.path> file:${file.config.path-sit}jdbc.properties </jdbc.config.path> </properties> </profile> <!-- 生成環境 --> <profile> <id>prod</id> <properties> <some.config.path> file:${file.config.path-prod}some.properties </some.config.path> <jdbc.config.path> file:${file.config.path-prod}jdbc.properties </jdbc.config.path> </properties> </profile> </profiles> </project>

2.引用配置檔案的xml的配置,例如:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 引入屬性配置檔案 -->
    <bean class="com.xxx.xxx.xxx.xxx">
        <property name="locations">
            <list>
                <value>${some.config.path}</value>
                <value>${jdbc.config.path}</value>
            </list>
        </property>
    </bean>

</beans>

3.在打包的時候。用maven進行install,命令如下:

mvn package -P sit

這裡的sit就是sit環境的配置路徑(如果在eclipse裡打包,則去掉mvn這個命令頭 ),如果使用這個打包命令,則打出來的war包裡xml引用配置檔案路徑改變,如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 引入屬性配置檔案 -->
    <bean class="com.xxx.xxx.xxx.xxx">
        <property name="locations">
            <list>
                <value>
                    file:/project-sit/config/xxx/some.properties
                </value> 
                <value>
                    file:/project-sit/config/xxx/jdbc.properties
                </value>
            </list>
        </property>
    </bean>

</beans>

4.這樣就可以把打好的war包,直接丟到伺服器上,然後把sit的配置檔案也丟到配置的資料夾下,這樣每次都不用修改配置檔案,直接打包,重新部署就ok。copy程式碼要注意。這裡是例子,刪減了很多東西。希望不要誤導同道們,相互學習。

—————-自動化的路還有很長,假如全自動需要100步,那這裡只能算是第一步。路漫漫其修遠兮,吾將上下而不停的,擼、抄襲、copy。