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

maven中profile使用

阅读更多
针对不同的环境使用不同的编译打包设置,方便了多环境下的打包部署,一般我们开发项目都会有至少开发环境和正式环境两个,针对这两个环境的配置信息也会有所不同,比如数据库的配置等。我们可以使用maven的profile定义来进行区分,比如我们在项目的pom文件中定义如下片段:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.hello</groupId>
    <artifactId>hello</artifactId>
    <version>0.1</version>
    <packaging>jar</packaging>
    <build>
        <resources>
            <resource>
          <directory>src/main/resources</directory>
          <includes>
      <include>*.*</include>
          </includes>
          <filtering>true</filtering>
      </resource>
        </resources>
    </build>

    <properties>
        <jdbc.url>jdbc:mysql://localhost:3306/abc</jdbc.url>
        <jdbc.username>root</jdbc.username>
        <jdbc.password>123456</jdbc.password>
    </properties>

    <profiles>
        <profile>
            <id>local</id>
    <properties>
                <jdbc.url>jdbc:mysql://localhost:3306/abc123</jdbc.url>
                <jdbc.username>rootuser</jdbc.username>
                <jdbc.password>rootpwd</jdbc.password>
    </properties>
        </profile>
    </profiles>
</project>
      这里我们在pom文件中定义了数据库的相关配置,同时定义了一个profile,其id为local,同时在这个profile中也定义了数据库的相关配置。这样我们使用mvn package命令时就可以使用默认的jdbc设置,当我们使用mvn package -P product时maven就会自动使用id为product的profile中的数据库配置,这个是maven读取属性配置文件的覆盖。

      其中pom文件中的resources段的配置:

<resources>
    <resource>
        <directory>src/main/resources</directory>
  <includes>
      <include>*.*</include>
        </includes>
        <filtering>true</filtering>
     </resource>
</resources>
      其中最重要的是<filtering>true</filtering>这段,这个配置的意思是过滤上面指定属性文件中的占位符,占位符是${变量名称}这样的形式,maven会自动读取配置文件,然后解析其中的占位符,使用上面pom文件中定义的属性进行替换。我们可以在src/main/resources下定义一个jdbc.properties配置文件,内容如下:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
      执行的效果如下:

## 使用默认的配置信息
mvn clean package

## 使用product环境的配置信息
mvn clean package -P product
分两次执行上面的命令后,然后到项目的target目录下查看打包后的结果,可以看到jdbc.properties文件的内容随着打包的参数不同而变化了,从而也就实现了我们多环境的配置自动打包了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics