运行maven scala项目

swo*_*ish 15 scala intellij-idea maven

我开始学习scala和mongo,我的IDE是intellij IDEA.我使用创建了一个scala项目

mvn:archetype-generate
Run Code Online (Sandbox Code Playgroud)

并在IDEA中输入一个简单的hello world程序,其中包含一些算术选项

println(5)
val i = 1+2
println(i)
Run Code Online (Sandbox Code Playgroud)

然后我用它编译它

mvn编译

它说

build success
Run Code Online (Sandbox Code Playgroud)

但是现在应该如何执行我的应用程序并验证输出.没有一篇文章解释了如何从scala,maven,idea开始,我对这一切都是全新的.任何帮助对我都有用.

Tom*_*icz 32

Maven的EXEC-插件

试试这段代码:

package com.example

object Main {
    def main(args: Array[String]) {
        println(5)
        val i = 1 + 2
        println(i)
    }
}
Run Code Online (Sandbox Code Playgroud)

将它放在下面/src/main/scala/com/example/Main.scala并使用以下方式运行:

$ mvn package exec:java -Dexec.mainClass=com.example.Main
Run Code Online (Sandbox Code Playgroud)

如果您不想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>
Run Code Online (Sandbox Code Playgroud)

还有其他可能性,这是最简单的.当然在IntelliJ中你应该能够直接运行程序.

Maven的JAR-插件

如果要发送应用程序,请使用maven-jar-plugin添加Main-ClassClass-Path清单的条目:

Main-Class: com.example.Main
Class-Path: lib/scala-library-2.9.0-1.jar lib/slf4j-api-1.6.1.jar ...
Run Code Online (Sandbox Code Playgroud)

以下配置执行此操作,并将所有依赖项(包括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>
Run Code Online (Sandbox Code Playgroud)

现在您只需运行您的应用程序(请注意该target/lib目录是必需的):

$ java -jar target/your_app-VERSION.jar
Run Code Online (Sandbox Code Playgroud)

您只需将JAR文件与/lib子目录一起复制即可运送应用程序.

另请参阅Exec Maven插件使用Scala和Maven.