使用maven创建scala项目,scala-archetype-simple有bug,会遇到一些问题,这里整理记录一下。
我的环境是:
maven 3.3.9eclipse 4.6java 1.8
通过命令行的形式创建 scala项目:
mvn archetype:generate -B \ -DarchetypeGroupId=net.alchim31.maven -DarchetypeArtifactId=scala-archetype-simple -DarchetypeVersion=1.6 \ -DgroupId=com.hainiubl.scala -DartifactId=scala-demo -Dversion=1.0 -Dpackage=com.hainiubl.scala.demo
命令执行完后的目录结构:
scala-demo tree.├── pom.xml├── src│ ├── main│ │ └── scala│ │ └── com│ │ └── hainiubl│ │ └── scala│ │ └── demo│ │ └── App.scala│ └── test│ └── scala│ └── samples│ ├── junit.scala│ ├── scalatest.scala│ └── specs.scala└── target
使用scala 2.11 编译工程会有问题:
scala 2.11不支持这个make参数了,从pom.xml中把这个参数去掉
[ERROR] scalac error: bad option: '-make:transitive'
生成的pom.xml缺少一个依赖
[ERROR] /Users/sandy/workspace/scala-demo/src/test/scala/samples/specs.scala:18: error: not found: type JUnitRunner[ERROR] @RunWith(classOf[JUnitRunner])[ERROR] ^[ERROR] one error found
在pom.xml中增加
org.specs2 specs2-junit_${scala.compat.version} 2.4.16 test
java 和 scala的版本可以修改成你想要的版本
我这里改成了1.8
修改后完整的pom.xml
4.0.0 com.hainiubl.scala scala-demo 1.0 ${project.artifactId} My wonderfull scala app 2015 My License http://.... repo 1.8 1.8 UTF-8 2.11.8 2.11 org.scala-lang scala-library ${scala.version} junit junit 4.12 test org.specs2 specs2-core_${scala.compat.version} 2.4.16 test org.specs2 specs2-junit_${scala.compat.version} 2.4.16 test org.scalatest scalatest_${scala.compat.version} 2.2.4 test src/main/scala src/test/scala net.alchim31.maven scala-maven-plugin 3.2.0 compile testCompile -dependencyfile ${project.build.directory}/.scala_dependencies org.apache.maven.plugins maven-surefire-plugin 2.18.1 false true **/*Test.* **/*Suite.*
打包编译一下:
mvn package
通过eclipse创建 scala项目:
默认没有scala的archetype,创建maven项目时自己指定一下:
archetype GroupId:net.alchim31.maven
archetype ArtifactId:scala-archetype-simplearchetypeVersion:1.61.5或1.6都可以,创建好项目后自己可以修改相应版本
其它修改可以参考上面的 pom.xml,道理是一样的。
pom.xml 还有可能会报错:
Multiple annotations found at this line: - Plugin execution not covered by lifecycle configuration: net.alchim31.maven:scala-maven-plugin:3.2.0:testCompile (execution: default, phase: test-compile) - Plugin execution not covered by lifecycle configuration: net.alchim31.maven:scala-maven-plugin:3.2.0:compile (execution: default, phase: compile)
解决办法
eclipse 菜单 Window->Preference->Maven->Errors/Warnings->Plugin execution not covered by lifecycle configuration 改成 ignore