`
hanqunfeng
  • 浏览: 1526606 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《Maven实战》学习笔记(5)--不同环境配置

 
阅读更多

一般来说,项目的配置文件都在resources下面,默认maven会从下面路径查找资源文件,这是超级pom中的配置
<resources>
      <resource>
        <directory>F:\maven_workspace\workspace\piaoyi\service\src\main\resources</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>F:\maven_workspace\workspace\piaoyi\service\src\test\resources</directory>
      </testResource>
    </testResources>

可以将不同环境的配置,通过属性定义的方式配置在profiles中(pom),然后在项目配置文件中使用这些mavne属性,在构建不同的环境时,通过激活不同的frofile来决定使用哪个环境的配置,比如(该profiles不能被子项目继承,只对当前pom项目有效,所以推荐配置在settings中):
<profiles>
        <profile>
            <id>dev</id>
            <properties>
                <db.driver>com.mysql.jdbc.Driver</db.driver>
                <db.url>jdbc:mysql://localhost:3306/test</db.url>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <db.driver>com.mysql.jdbc.Driver</db.driver>
                <db.url>jdbc:mysql://192.168.0.10:3306/test</db.url>
            </properties>
        </profile>
    </profiles>

同时,需要在pom中的修改资源配置(定义在聚会项目中即可,可以被继承),如下,增加在pom中:
    <build>
        <resources>
            <resource>
                <directory>${project.basedir}\src\main\resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>${project.basedir}\src\test\resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>
    </build>


然后在执行构建时,执行如下命令:
mvn clean install -Pdev
激活该profile

也可以在settings.xml中进行配置,以使某个profile一直处于激活状态
    <activeProfiles>
        <activeProfile>nexus</activeProfile>
        <activeProfile>dev</activeProfile>

    </activeProfiles>

以上配置,只能替换classes下的资源文件,如果希望替换webApp下的文件内容,需要增加如下插件:
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <webResources>
                        <resource>
                            <filtering>true</filtering>
                            <directory>src/main/webapp</directory>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>


习惯ant的可以使用如下方式进行资源文件替换
<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.3</version>
                <executions>
                    <!-- 执行的动作 -->
                    <execution>
                        <id>ant-copy</id>
                        <phase>prepare-package</phase>      <!-- 绑定到prepare-package 阶段-->
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks> <!-- 调用ant的copy任务执行资源文件替换 -->
                                <echo message="prepare-release run" />
                                <copy todir="${project.build.directory}/classes/config" overwrite="true">
                                    <fileset dir="${project.basedir}/config/release" />
                                </copy>
                                <echo message="prepare-release completed!" />
                            </tasks>
                        </configuration>
                    </execution>
                    可以定义多个动作
                </executions>
            </plugin>




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics