新建一個類StartUp,找到org.mybatis.generator.api.ShellRunner這個類,它就是生成文件的入口類,拷貝106-117行代碼,再稍微作下修改。

generatorConfig.xml在resources目錄下面,它里面要定義輸出文件的目錄,如果不指定具體的路徑,默認是在當前文件夾下面生成。

但是呢,這里有個比較蛋疼的地方,mybatis-generator-core默認是不給你生成文件夾的,不信?請看org.mybatis.generator.internal.DefaultShellCallback的第50行,當指定的目錄不存在時,就拋出ShellException異常,所以輸出文件也就不可能有了。這里我們注釋掉51行代碼,添加如下代碼:

現在再來執行StartUp看看,發現在與src、target同級目錄下生成了mybatis3目錄,里面有相應的pojo與xml,打開之后看看效果,與我們改動代碼后預想的結果一致。那么接下來就看看,如何將它打包輸出成下面這樣的效果。

首先我們新建一個src/main/scripts/run.bat文件,內容如下:
java -jar mybatis-generator-1.3.2.jar -configfile generatorConfig.xml –overwrite
pause
其實就是一個java命令行,里面加的參數都是ShellRunner需要的,加上pause是方便查看輸出信息。
然后修改pom文件,既然最終輸出有源文件JAR和編譯后的class JAR,所以我們需要增加maven-source-plugin和maven-jar-plugin這兩個插件,另外還用到了maven-assembly-plugin插件。這些plugin具體的用法,我就不講了,我只說下要注意的地方。

注意紅色框的內容,表示我將打包的源代碼只會是原來的,增加的com.bolo.StartUp是不會包含進去的,而且這也沒必要添加進去。

編譯之后的打包同樣只包含原來的代碼,并且一定要在這里指定入口類。classpathPrefix是類目錄,為空就是生成在當前目錄下。如果寫成<classpathPrefix>lib/</classpathPrefix>這樣,則表示生成的mybatis-generator-1.3.2.jar會在lib目錄下面。

上圖descriptor里面的內容表明了assembly.xml的位置,它可以做很多自定義設置。

這里定義的id默認是加到生成的文件名后面的,但我們在上圖中設置了<appendAssemblyId>false</appendAssemblyId>,所以,這個all-in-one就不會加到生成的文件名后面了,如果想要這個名字,將false改成true即可。<format>zip</format>表示將生成一個以zip為后綴的壓縮包。

我們最終是想把幾個文件都放在一個目錄下面,所以outputDirectory就不需要再定義其它的名字。通過前面的輸出知道,最后只會包含generatorConfig.xml和run.bat這兩個文件,其它的配置文件并不是我們需要的,因此這里需要排除它們。
另外還有兩個fileSet是指定源代碼的JAR和編譯class的JAR,這兩個設置和前面類似。

有點補充說明:此例都是以MySQL數據庫為例,所以運行是需要mysql的數據庫驅動的,但我又不想在輸出里面包含這個jar,因此就在generatorConfig.xml文件里面進行了配置,不清楚的可以看看。
最后的最后,這些我們都做完了,那么就可以打包輸出了,使用mvn package或是在Run As -> Maven Build -> Goals里面填寫package,點擊 Run。
源碼下載: mybatis-generator-1.3.2.zip
本文為菠蘿大象原創,如要轉載請注明出處。http://www.aygfsteel.com/bolo