scala - 运行 Maven scala 项目

标签 scala maven intellij-idea

我开始学习 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-ClassClass-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 PluginPlaying with Scala and Maven .

关于scala - 运行 Maven scala 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6758258/

相关文章:

maven - 多模块项目和 ${basedir} 占位符

java - Gentoo Linux 下运行的 IntelliJ IDEA 中的 Web 服务支持

scala - 如何让IntelliJ识别Scala脚本中的导入?

scala - 如果过滤函数导致空列表,则返回未过滤列表

java - 玩2.0和IDEA。缺少 javaCore、javaJdbc、javaEbean 依赖项

scala - 为什么 Scala 编译器不使用抽象类型推断类型

scala - 为什么这个递归函数不起作用

java - Spring Boot - 不支持的主要.次要版本 51.0

java - MockClassLoader 无法访问 jdk/internal/reflect 父类(super class) jdk.internal.reflect.MagicAccessorImpl

git - Android Studio (IntelliJ) 空闲时自动 git fetch