插件基本使用參考:http://www.javashuo.com/article/p-bpbvqzag-eq.htmlmysql
但有時候想經過命令行運行時覆蓋默認的配置參數,若是是配置硬編碼是不能覆蓋的,仍是會使用pom.xml中配置的參數,舉個栗子:sql
<plugin> <groupId>io.jcode</groupId> <artifactId>codegen</artifactId> <version>1.0-SNAPSHOT</version> <configuration> <dbType>mysql</dbType> <dbUrl>jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8</dbUrl> <dbUser>root</dbUser> <dbPassword>123456</dbPassword> <tablePrefix>test_</tablePrefix> </configuration> </plugin>
想在運行時設置tablePrefix參數爲user_,因而maven
mvn codegen:generate -DcodeType=MODEL -DtablePrefix=user_
可是運行發現最終生效的仍是pom中的test_ui
那這怎麼才能經過命令行覆蓋呢?有木有辦法?編碼
答案是確定的,看下面配置spa
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <tablePrefix>demo_</tablePrefix> <dbPassword>123456</dbPassword> </properties> .... <build> <finalName>${artifactId}-${version}</finalName> <plugins> <plugin> <groupId>io.jcode</groupId> <artifactId>codegen</artifactId> <version>1.0-SNAPSHOT</version> <configuration> <dbType>mysql</dbType> <dbUrl>jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8</dbUrl> <dbUser>root</dbUser> <dbPassword>${dbPassword}</dbPassword> <tablePrefix>${tablePrefix}</tablePrefix> </configuration> </plugin> </plugins> </build>
再運行下命令就發現生效了.net
mvn codegen:generate -DcodeType=MODEL -DtablePrefix=user_
jcode maven plugin 的其餘參數若是須要覆蓋的以一樣的方式配置,這樣在運行時就能夠很靈活很方便了。插件
注意:-DXXX的名稱是properties配置對應的標籤名稱哦~,不是plugin的參數名稱。命令行
最後總結下maven參數的傳遞優先級:code
mvn codegen:generate -DXXX=123
一、若是參數XXX不存在於pom.xml中,則XXX的值會以命令行設置的值寫入,命令參數值行傳遞有效;
二、若是參數XXX存在於pom.xml中且是硬編碼的形式配置的,其XXX的值將以pom中配置的寫入,命令行參數值傳遞無效;
三、若是參數XXX存在於pom.xml中且是經過properties的形式${XXX}配置的,其XXX的值會以命令行設置的寫入,命令行參數值傳遞有效。