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

相關文章
相關標籤/搜索