如何进行scala和java混合开发打包?
首先创建maven工程,在pom.xml添加一下依赖
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>3.8.1</junit.version>
<slf4j-api.version>1.6.4</slf4j-api.version>
<commons-lang3>3.1</commons-lang3>
<scala.version>2.11.8</scala.version>
<maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<!-- log API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>spark.example.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
其中mainClass是最后打包的jar包的主函数,通常是包含main方法的scala类,你也可以不指定。
打包命令用mvn clean scala:compile package
打包之后在jar同目录下会有./lib子目录,包含scala-library-2.11.8.jar等依赖包都会在该目录。
如果依赖包在其他目录,也可以用命令:、
java -Djava.ext.dirs=c:\libs -jar my-snapshot.jar
来执行。其中-Djava.ext.dirs=c:\libs指定了依赖包路径为c:\libs,你可以换成自己的目录。
来源:oschina
链接:https://my.oschina.net/u/778683/blog/4271877