Java&Scala混合编程

原创 2015年07月07日 22:34:33

1. mvn 创建一个普通的java工程后,添加如下信息:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.jerry</groupId>
    <artifactId>mix-test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <jackson.version>2.4.2</jackson.version>
        <scala.version>2.11.1</scala.version>
        <slf4j.version>1.7.7</slf4j.version>
        <scala.maven.version>2.11.1</scala.maven.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <defaultGoal>package</defaultGoal>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <recompileMode>incremental</recompileMode>
                    <args>
                        <arg>-target:jvm-1.7</arg>
                    </args>
                    <javacArgs>
                        <javacArg>-source</javacArg>
                        <javacArg>1.7</javacArg>
                        <javacArg>-target</javacArg>
                        <javacArg>1.7</javacArg>
                    </javacArgs>
                </configuration>
                <executions>
                    <execution>
                        <id>scala-compile</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>scala-test-compile</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
        <pluginManagement>
            <plugins>
                <!--This plugin's configuration is used to store Eclipse m2e settings
                    only. It has no influence on the Maven build itself. -->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>
                                            net.alchim31.maven
                                        </groupId>
                                        <artifactId>
                                            scala-maven-plugin
                                        </artifactId>
                                        <versionRange>
                                            [3.1.6,)
                                        </versionRange>
                                        <goals>
                                            <goal>compile</goal>
                                            <goal>testCompile</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore></ignore>
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

</project>

2. 在src/main/下,创建 scala 目录

                   src/main/java

                   src/main/scala

3. demo:

Java class:

//package mix.java.scala;
 
public class GreetingInJava {
    public void greet() {
        System.out.println("Hello World!");
    }
}

Scala class:

class GreetingInScala {
  def greet: Unit = {
    val delegate: GreetingInJava = new GreetingInJava
    delegate.greet
  }
}


Java class:

public class Bootstrap {
 
    public static void main(String[] args) {
        GreetingInScala scala = new GreetingInScala();
        scala.greet();
    }
}



相关文章推荐

IDEA Java/Scala混合项目maven打包

1.在建立Maven项目时,选择骨架为maven-archetype-quickstart 2.pom文件内容为:

Eclipse下Java+Scala混合编程的Maven项目

用spark + java混合实现spark项目,我想肯定有我一样坚持要用eclipse + maven来配置开发环境,而不愿意换Intelij + sbt的同学吧。 照着文章中的步骤配置,完全ok...

maven建立java和scala混合的项目

项目需求:我们采用spark开发项目,使用的开发语言采用java和scala的混合,这个时候我们的项目需要支持java和scala,一般方法两种 (1)通过IDEA开发工具,下载SBT安装包,通过SB...

maven环境下使用java、scala混合开发spark应用

熟悉java的开发者在开发spark应用时,常常会遇到spark对java的接口文档不完善或者不提供对应的java接口的问题。这个时候,如果在java项目中能直接使用scala来开发spark应用,同...

Step into Scala - 23 - 与 Java 互相调用

Scala -> Java,Java -> Scala

Scala学习笔记13 - 结合scala和java

===结合scala和java       scala和java高度兼容,因此可以进行互操作,大多数情况下结合这两种语言时并不需要太多顾虑,尽管如此,有时你还是会遇到一些结合java和scala的问题...

maven混合编译java&scala

步骤: 1. mvn 生成scala项目 mvn archetype:generate \ -DarchetypeGroupId=org.scala-tools.archetypes \ ...

让maven正常编译scala、java代码混合的工程

编辑pomxml 编译 制作war包编辑pom.xml假设代码所在目录为: src/main/java src/main/scala src/test/java src/test/scala加...
  • wzp1986
  • wzp1986
  • 2017年03月11日 03:11
  • 976

Eclipse Maven 构建Java和Scala混合项目

一,Eclipse 安装Maven 插件 可以到Eclipse Maket去搜索 二,安装scala插件      1,新的scala插件可以在Eclipse Maket搜索安装;      ...

Scala入门到精通——第二十八节 Scala与JAVA互操作

本节主要内容 1. JAVA中调用Scala类 2. Scala中调用JAVA类 3. Scala类型参数与JAVA泛型操作 4. Scala与Java间的异常处理...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java&Scala混合编程
举报原因:
原因补充:

(最多只允许输入30个字)