IntelliJ IDEA 中创建 Maven Scala 项目

Scala 项目看家的构建工具当然是 SBT, 假如我们已习惯于 Maven, 想要用 Maven 来构建 Scala 项目该如何做呢?那首先要找到一个 Maven Scala 相应的 Archetype, 然后用命令 mvn archetype:generate 或是在 IntelliJ IDEA 使用 Maven 项目创建向导来选择一个 Maven Scala Archetype。这里主要介绍 IntelliJ IDEA 中 Maven 向导创建 Scala 项目的方式。

首先确保我们已安装了 IntelliJ IDEA 的 Maven 和  Scala 插件。插件中自带了 org.scala-tools.archetypes:scala-archetype-simple:1.2 的 Maven archetype, 这是一个貌视 Scala 官方的 archetype。我们可以尝试基于它来创建一个 Maven Scala 项目。通过 IntelliJ IDEA 的菜单 File/New/Project..., 在弹出的窗口中选择 Maven/Create from archetype, 然后找到 scala-archetype-simple, 自带版本为 1.2, 当前最新版也不过 1.3, 那还是  2010 年建立,别提有多老了。

创建出来项目的 pom.xml 也不出所料

一切都太老了,实际上在当今的 IntelliJ IDEA(2017.2.6) 中该项目也无法运行。

所以我们需寻求更新的 Maven Scala Archetype,于是找到了 net.alchim31.maven:scala-archetype-simple:1.6, 它的版本号是  1.4, 1.5, 1.6,看来是来给官方的 scala-archetype-simple 续命来的,它的项目在 github 上可以找到 davidB/scala-archetype-simple

我们需要在创建项目时把该 archetype 添加到 IntelliJ IDEA 中来,还是同样的创建 Maven 项目的向导,只是这时候我们要点击 Add Archetype... 按钮,在窗口中输入相应的

GroupId: net.alchim31.maven
ArtifactId: scala-archetype-simple
Version: 1.6

添加完后,我们选择该 Maven Archetype 来创建项目,输入自己项目的 GroupId, ArtifactId 等信息,生成项目后,我们可以查看一个 pom.xml 文件

好像还不怎么新,可以自己把 Java 的改为 1.8, 或 Scala 的版本改为 2.12.* 的版本,改完了需作测试。

基于原始状态,我试着运行该项目的 App.scala, 报出错误

Error:scalac: bad option: '-make:transitive'

把 pom.xml 中的

<arg>-make:transitive</arg>

删掉,再运行,错误是

Error:(18, 18) not found: type JUnitRunner
@RunWith(classOf[JUnitRunner])

需要引入依赖

并且在 specs.scala 测试类中引入 JUnitRunner

import org.specs2.runner.JUnitRunner

下面是我修复后的完整的 pom.xml 内容

下一步,将会把这个修复好的项目作为一个 g8 的项目模板。

Dec 8, 2017: 做成了一个 giter8(g8) 的 Maven Scala 2.11 项目模板,之所以特定于 Scala 2.11.x, 是因为换成 Scala 2.12.x 后其他的依赖也改动很大,目前主流上像 Spark(当前版本 2.2) 还是只支持 Scala 2.11.

如果安装了 giter8 的话,只需要输入一行命令

再回答三个关于项目名,包名,版本的问题,一个基本的 Maven Scala 2.11 的项目便立马呈现在了你的面前。

关于  giter8(g8) 的使用请参考我一年多前的一篇日志:Giter8 -- 把项目布局模板放到 GitHub 上

链接:

  1. Creating a Scala Project with Maven Dependency Management for Gatling Testing in IntelliJ IDEA
  2. spark-in-action/scala-archetype-sparkinaction
  3. SCALA WITH MAVEN

 

类别: Scala. 标签: . 阅读(40). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar
wpDiscuz