构建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中的文档。测试