我开始学习 scala 和 mongo ,我的 IDE 是 intellij IDEA。我创建了一个使用
mvn:archetype-generate
并在 IDEA 中键入一个简单的 hello world 程序,其中包含一些算术选项,例如
println(5)
val i = 1+2
println(i)
然后我编译它使用
编译
它说
build success
但是现在我应该如何执行我的应用程序并验证输出。没有一篇文章解释了如何从 scala、maven、idea 开始,我对所有这些都是全新的。任何帮助都会对我有用。
最佳答案
maven-exec-plugin
尝试使用此代码:
package com.example
object Main {
def main(args: Array[String]) {
println(5)
val i = 1 + 2
println(i)
}
}
把它放在
/src/main/scala/com/example/Main.scala
下并使用以下命令运行它:$ mvn package exec:java -Dexec.mainClass=com.example.Main
如果不想通过
mainClass
手动,您可以在插件配置中执行此操作:<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<mainClass>com.example.Main</mainClass>
</configuration>
</plugin>
</plugins>
还有其他可能性,这是最简单的一种。当然在 IntelliJ 中你应该能够直接运行程序。
Maven jar 插件
如果您想发布应用程序,请使用
maven-jar-plugin
添加 Main-Class
和 Class-Path
list 条目:Main-Class: com.example.Main
Class-Path: lib/scala-library-2.9.0-1.jar lib/slf4j-api-1.6.1.jar ...
以下配置执行此操作并将所有依赖项(包括 Scala 运行时库)复制到
target/lib
.<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
<addClasspath>true</addClasspath>
<classpathLayoutType>custom</classpathLayoutType>
<customClasspathLayout>lib/$${artifact.artifactId}-$${artifact.version}$${dashClassifier?}.$${artifact.extension}
</customClasspathLayout>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.3</version>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
现在您可以简单地通过以下方式运行您的应用程序(注意
target/lib
目录是必需的):$ java -jar target/your_app-VERSION.jar
您只需复制 JAR 文件和
/lib
即可发布您的应用程序。子目录。另见 Exec Maven Plugin和 Playing with Scala and Maven .
关于scala - 运行 Maven scala 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6758258/