当前位置: 首页 > 面试题库 >

使用Maven构建一个Scala应用程序(混合了Java源代码)

鱼征
2023-03-14
问题内容

我有一个我想混合使用Java和Scala源代码的应用程序(实际上是将Java应用程序迁移到Scala的应用程序,但一次)。

我可以在IDE中很好地完成这项工作。但是我不确定如何使用Maven做到这一点-
scalac可以编译Java和Scala交织在一起,但是如何为模块设置Maven?

另外,我的Scala源代码是否必须与Java文件夹不同?


问题答案:

使用maven scala插件,类似于以下配置的配置将适用于混合了Java和scala源代码的项目(当然,scala源代码位于/
scala目录中,正如其他人提到的那样)。

您可以运行run mvn compile,test等…,它们都将正常运行。非常好(它将首先自动运行scalac)。

对于一个出色的IDE,IntelliJ
8可以很好地工作:添加scala插件,然后添加一个scala小平面,然后调整scala的编译设置以首先运行scalac(如果您与scala和java源代码有循环依赖关系,则至关重要)。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>scala-java-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>scala-java-app</name>
<repositories>
    <repository>
        <id>scala-tools.org</id>
        <name>Scala-tools Maven2 Repository</name>
        <url>http://scala-tools.org/repo-releases</url>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>scala-tools.org</id>
        <name>Scala-tools Maven2 Repository</name>
        <url>http://scala-tools.org/repo-releases</url>
    </pluginRepository>
</pluginRepositories>
<build>
    <plugins>
        <plugin>
            <groupId>org.scala-tools</groupId>
            <artifactId>maven-scala-plugin</artifactId>
            <executions>

                <execution>
                    <id>compile</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <phase>compile</phase>
                </execution>
                <execution>
                    <id>test-compile</id>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                    <phase>test-compile</phase>
                </execution>
                <execution>
                   <phase>process-resources</phase>
                   <goals>
                     <goal>compile</goal>
                   </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>
    </plugins>  
</build>
<dependencies>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.7.2</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>


 类似资料:
  • 问题内容: 今天,我一直在尝试寻找一个合适的解决方案来建立一个既包含Java代码又包含Scala代码(它们之间具有双向依赖性)的maven项目。 我发现的解决方案通常包括在该阶段调用scala-maven-plugin或maven-scala- plugin,以便它在默认的maven编译器插件之前运行(示例:http : //www.hascode.com/2012/03 /片段混合- 斯卡拉的J

  • 目标 了解对象或对象集合如何变成应用程序 使用 Eclipse 创建驱动程序类 应用程序入口点 所有 Java 应用程序都需要一个入口点,让 Java 运行时知道将从这里开始执行代码。这个入口点就是 main() 方法。域对象(即应用程序的业务域 中包含的对象,例如 Person 和 Employee)通常没有 main() 方法,但每个应用程序中必须至少有一个类。 众所周知,Person 和它的

  • 在SpringBoot项目中,谁使用maven。找不到类 我绒球的一部分 项目结构 当我启动应用程序时,我得到了这个错误 错误:无法找到或加载主类com.acme.pay.ms.BillingServiceApplication导致:java.lang.ClassNotFoundExc0019:com.acme.pay.ms.BillingServiceApplication命令执行失败。 无法执

  • 我正在尝试为windows phone构建我的应用程序,但代号为one的构建服务器给了我构建错误。以下是错误日志:https://s3.amazonaws.com/codenameone-build-response/7e34c6a4-f939-4044-8ab3-afbad45e7447-1450100218601-error.txt 当我为Android构建它时,一切都很好。 当我从NetBe

  • 我正在尝试构建一个应用程序,它将根据赌博的鞅来告诉你输赢。 我的想法是,你可以设定你的钱、目标和最低赌注。 例如我设置我现在的钱是1000,我的目标是得到1100,最低下注是100,应用程序会显示我是否赢了。 实际上,我的想法是构建这个应用程序来计算获胜率,但我不知道怎么做,因此我只是尝试先构建一个更简单的应用程序,如果可以的话,再进一步修改。 但是当我尝试运行应用程序时,应用程序一直显示“你输了

  • 我是一名PHP、HTML5、CSS3、Javascript、Jquery、Angular的全栈开发人员,热衷于学习任何新技术 现在,我有了一个混合移动应用程序项目(更简单,只需少量的curd操作和web服务),而且它还将是web应用程序,我需要尽快交付。所以我的问题是为正确的工作选择正确的工具 混合应用程序可以使用 平台:Phonegap或cordova,根据我的理解,cordova是Phoneg