学习Maven之Properties Maven Plugin

来自:辵鵵(飞车兔)

1.properties-maven-plugin是个什么鬼?

介绍前我们先看一个问题,比如我们有一个maven项目结构如下:


学习Maven之Properties Maven Plugin_第1张图片

一般我们都把一些配置文件放到像src/main/resources/jdbc.properties这样的文件中。但是文件里我们更多的放的还是变量,内容如下:

jdbc.driverClassName=${jdbc.driverClassName}
jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
jdbc.validationQuery=${jdbc.validationQuery}

具体的值我们会放到pom.xml中,用来配置,如下所示代码:



    4.0.0
    com.qyf404
    learn-maven
    1.0-SNAPSHOT
    
    
        com.mysql.jdbc.Driver
        jdbc:mysql://localhost/stock?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&autoReconnect=true
        root
        
        SELECT 1 + 1
    
    
        
            
                true
                ${project.basedir}/src/main/resources
                
                    *.properties
                
            
        
    

  按照上面的方式配置。我们执行mvn package后,在target/classes/jdbc.properties里可以看到配置文件被成功替换。

  由于某些原因(比如配置文件项比较多,为了让pom.xml更精简),我们希望把这些配置项提取到一个properties文件中进行配置。

  这时候就需要用到properties-maven-plugin了。properties-maven-plugin可以在执行maven命令时,读取指定properties文件中的配置项,来实现和pom.xml中配置 一样的效果。

2.properties-maven-plugin怎么用?

 还拿上面的例子说,比如我们把pom.xml中的配置项放到一个全局的my.properties中。

profiles/dev/my.properties 文件内容如下:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/stock?reateDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-&autoReconnect=true
jdbc.username=root
jdbc.password=
jdbc.validationQuery=SELECT 1 + 1

pom.xml 我们把插件加进去,并把之前里面的配置项注释掉.



4.0.0
com.qyf404
learn-maven
1.0-SNAPSHOT

    
    
    
    
    


    
        
            true
            ${project.basedir}/src/main/resources
            
                *.properties
            
        
    
    
        
            org.codehaus.mojo
            properties-maven-plugin
            1.0-alpha-2
            
                
                    default-cli
                    initialize
                    
                        read-project-properties
                    
                    
                        
                            ${user.dir}/profiles/dev/my.properties
                        
                    
                
            
        
    


  我们执行mvn package后,在 target/classes/jdbc.properties 里可以看到配置文件被成功替换。

3.进阶

  把pom.xml里的配置项提取到properties文件中,这是properties-maven-plugin干的事情。但是我们用properties-maven-plugin要达到更好的效果。

想一个场景:

  • 我们的项目有开发环境的配置,测试环境的配置;
  • 而且开发环境是mysql数据库,测试环境是hsqldb数据库;
  • 最后还要在一个文件中统一打印出配置项内容。

  我们可以通过maven的profile来配上properties-maven-plugin实现针对不同环境的快速打包。

我们把项目做个改造,结构如下:


学习Maven之Properties Maven Plugin_第2张图片

profiles/dev/my.properties
内容如下:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/stock?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&autoReconnect=true
jdbc.username=root
jdbc.password=
jdbc.validationQuery=SELECT 1 + 1

profiles/test/my.properties
内容如下:

jdbc.driverClassName=org.hsqldb.jdbc.JDBCDriver
jdbc.url=jdbc:hsqldb:hsql://localhost/stocktest
jdbc.username=root
jdbc.password=
jdbc.validationQuery=SELECT 1 + 1

pom.xml 内容如下:



4.0.0
com.qyf404
learn-maven
1.0-SNAPSHOT








    
        
            true
            ${project.basedir}/src/main/resources
            
                *.properties
            
        
    
    
        
            org.codehaus.mojo
            properties-maven-plugin
            1.0-alpha-2
            
                
                    default-cli
                    initialize
                    
                        read-project-properties
                        write-project-properties
                    
                    
                        
                            
                            ${user.dir}/profiles/${profile.id}/my.properties
                        
                        
                        ${build.directory}/profile.properties
                    
                
            
        
    


    
        dev
        
            true
        
        
            dev
        
        
            
                mysql
                mysql-connector-java
                5.1.31
                runtime
            
        
    
    
        test
        
            test
        
        
            
                org.hsqldb
                hsqldb
                2.2.6
                runtime
            
        
    


我们现在只需要执行命令mvn package -Pdev或者mvn package就可以打一个开发的包。

执行命令mvn package -Ptest就可以打一个测试用的包。

而且在target/profile.properties里查看项目打包的全部maven用到的配置项。内容如下:

#Properties
#Wed Sep 23 19:06:47 CST 2015
jdbc.url=jdbc\:mysql\://localhost/stock?createDatabaseIfNotExist\=true&useUnicode\=true&characterEncoding\=utf-8&autoReconnect\=true
jdbc.username=root
jdbc.validationQuery=SELECT 1 + 1
jdbc.password=
profile.id=dev
jdbc.driverClassName=com.mysql.jdbc.Driver

你可能感兴趣的:(学习Maven之Properties Maven Plugin)