構建Scala的工程經常使用sbt,sbt當然靈活,功能強大,卻也難以精通,且在國內使用每每遇到網絡不順暢通的狀況。雖然可使用Repox公服和Coursier加速,卻也浪費程序員們寶貴的時間。html
Maven雖然死板,在各大公司中應用卻較爲普遍,並且極有可能公司的發佈系統只支持Maven。另外Maven也有Scala的插件,Scala生態系統中的殺手級應用Spark實際上也從sbt切換到了Maven。使用Maven解析各類依賴也比sbt要快一些,因此掌握使用Maven構建Scala工程很是有必要。java
本文主要介紹Scala的Maven插件以及一些小技巧。git
使用mvn archetype:generate
而後選擇net.alchim31.maven:scala-archetype-simple
這個模板就能夠快速建立一個簡易的Scala工程。可是,這個模板有點過期了,因此個人建議是fork這個模板工程 ,而後本身定製本身的模板。能夠參考我修改的模板:https://github.com/sadhen/sca... 。程序員
git clone https://github.com/sadhen/scala-archetype-simple.git cd scala-archetype-simple mvn install cd yourProjectDir mvn archetype:generate -DarchetypeCatalog=local
按照以上步驟能夠在本地使用本身定製過的模板。github
我給模板添加了maven-assembly-plugin
。因而:bash
$ mvn package $ java -jar target/test-1.0-SNAPSHOT-jar-with-dependencies.jar 1 2 3 Hello World! concat arguments = 123
也能夠:網絡
$ mvn scala:run -DmainClass=com.sadhen.App -DaddArgs="1|2|3" Hello World! concat arguments = 123
其中1,2,3是參數,|
是分隔符。
還有一種方法是在配置文件中使用launcher,詳見參考資料2的文檔。maven
與sbt console
相對應的是mvn scala:console
。這個REPL便利之處在於,能夠import工程中依賴的jar包代碼和本身寫的代碼隨意玩耍。實際上,REPL也是一種測試/調試代碼的方式。另外,還能夠在REPL執行前和執行後調用一些本身編寫的代碼,詳見參考資料2中的文檔。測試