Scala and Maven

构建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

REPL

sbt console相对应的是mvn scala:console。这个REPL便利之处在于,能够import工程中依赖的jar包代码和本身写的代码随意玩耍。实际上,REPL也是一种测试/调试代码的方式。另外,还能够在REPL执行前和执行后调用一些本身编写的代码,详见参考资料2中的文档。测试

参考资料

  1. Scala with Maven插件

  2. Scala Maven Plugin

  3. executable-jar-with-maven-example

相关文章
相关标签/搜索