使用maven管理项目有一个好处是就是可以针对不同的环境使用不同的编译打包设置,方便了多环境下的打包部署,一般我们开发项目都会有至少开发环境和正式环境两个,针对这两个环境的配置信息也会有所不同,比如数据库的配置等。我们可以使用maven的profile定义来进行区分,比如我们在项目的pom文件中定义如下片段:
<!-- 配置参数 --> <profiles> <profile> <id>test</id> <properties> <db.driver>com.mysql.driver</db.driver> <db.url>http://localhost:3306/test</db.url> <db.username>root</db.username> <db.password>root</db.password> </properties> </profile> </profiles> <build> <finalName>mavenwebdemo</finalName> <!-- 过滤指定文件中的占位符 --> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>*.*</include> </includes> <filtering>true</filtering> </resource> </resources> <plugins> <!-- maven jetty plugin --> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.0.v20120127</version> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> <webApp> <contextPath>/mavenwebdemo</contextPath> </webApp> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>9999</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> <stopPort>8191</stopPort> <stopKey>ts</stopKey> </configuration> </plugin> <!-- <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.0.0.v20130308</version> </plugin> --> </plugins> </build>
其中最重要的是<filtering>true</filtering>这段,这个配置的意思是过滤上面指定属性文件中的占位符,占位符是${变量名称}这样的形式,maven会自动读取配置文件,然后解析其中的占位符,使用上面pom文件中定义的属性进行替换。