【问题标题】:running a maven scala project运行一个 Maven Scala 项目
【发布时间】:2011-10-09 03:38:44
【问题描述】:

我开始学习 scala 和 mongo ,我的 IDE 是 intellij IDEA。我使用

创建了一个scala项目
mvn:archetype-generate

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

println(5)
val i = 1+2
println(i)

然后我用它编译它

mvn 编译

它说

build success

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

【问题讨论】:

    标签: scala maven intellij-idea


    【解决方案1】:

    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-plugin

    如果您想发布应用程序,请使用maven-jar-pluginMain-ClassClass-Path 条目添加到清单中:

    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

    【讨论】:

    • 所以我必须在这里提供我的项目的入口点,我的项目有多大并不重要吗?
    • 你是在问你总是必须指定mainClass吗?不,您可以在 pom.xml 中对其进行硬编码。另请参阅我对其他选项的编辑。
    • 我已经尝试让 maven 设置类路径一个小时了!只是缺少 ....ahhhhh。 ta
    • 试过mvn package exec:java -Dexec.mainClass=com.example.Main,很有魅力。谢谢
    猜你喜欢
    • 2019-07-10
    • 2014-03-31
    • 1970-01-01
    • 2020-09-17
    • 2015-01-11
    • 2015-12-01
    • 2010-11-08
    • 2015-11-18
    相关资源
    最近更新 更多