在没有Maven的情况下安装Spark

问题描述:

我正在考虑在Java课程中使用Spark。我的学生不知道Maven,所以我想让他们在没有Maven的情况下安装Spark。 我下载了this jar file并将其添加到我的项目中,但是,我得到了有关缺少类的运行时错误(如slf4j)。有没有简单的方法来安装没有Maven的Spark?在没有Maven的情况下安装Spark

鉴于这种非常简单的POM:

<?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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.*.spark</groupId> 
    <artifactId>hello</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <description>Spark Hello</description> 
    <inceptionYear>2017</inceptionYear> 

    <dependencies> 
    <dependency> 
     <groupId>com.sparkjava</groupId> 
     <artifactId>spark-core</artifactId> 
     <version>2.6.0</version> 
    </dependency> 
    </dependencies> 

</project> 

的调用mvn dependency:tree产量:

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building hello 0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ hello --- 
[INFO] com.*.spark:hello:jar:0.1-SNAPSHOT 
[INFO] \- com.sparkjava:spark-core:jar:2.6.0:compile 
[INFO] +- org.slf4j:slf4j-api:jar:1.7.13:compile 
[INFO] +- org.eclipse.jetty:jetty-server:jar:9.4.4.v20170414:compile 
[INFO] | +- javax.servlet:javax.servlet-api:jar:3.1.0:compile 
[INFO] | +- org.eclipse.jetty:jetty-http:jar:9.4.4.v20170414:compile 
[INFO] | | \- org.eclipse.jetty:jetty-util:jar:9.4.4.v20170414:compile 
[INFO] | \- org.eclipse.jetty:jetty-io:jar:9.4.4.v20170414:compile 
[INFO] +- org.eclipse.jetty:jetty-webapp:jar:9.4.4.v20170414:compile 
[INFO] | +- org.eclipse.jetty:jetty-xml:jar:9.4.4.v20170414:compile 
[INFO] | \- org.eclipse.jetty:jetty-servlet:jar:9.4.4.v20170414:compile 
[INFO] |  \- org.eclipse.jetty:jetty-security:jar:9.4.4.v20170414:compile 
[INFO] +- org.eclipse.jetty.websocket:websocket-server:jar:9.4.4.v20170414:compile 
[INFO] | +- org.eclipse.jetty.websocket:websocket-common:jar:9.4.4.v20170414:compile 
[INFO] | \- org.eclipse.jetty.websocket:websocket-client:jar:9.4.4.v20170414:compile 
[INFO] |  \- org.eclipse.jetty:jetty-client:jar:9.4.4.v20170414:compile 
[INFO] \- org.eclipse.jetty.websocket:websocket-servlet:jar:9.4.4.v20170414:compile 
[INFO]  \- org.eclipse.jetty.websocket:websocket-api:jar:9.4.4.v20170414:compile 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.229 s 
[INFO] Finished at: 2017-10-14T21:33:25+02:00 
[INFO] Final Memory: 12M/212M 
[INFO] ------------------------------------------------------------------------ 

...这基本上是给你的最小集合,开始最简单的Spark应用程序所需的JAR文件。

从那里,你有几种选择:

  • 下载整套JAR文件,并把它提供给你的学生作为lib/目录,并让他们建立自己的CLASSPATH手动
  • 重建单个脂肪JAR所有必需的JAR文件的内容
  • 第一届会议期间花一些时间来Maven的(或摇篮)的基础知识教给学生

[稍微偏离主题] 不可否认,根据可用的时间,我肯定会推荐第三个选项:Maven(或Gradle)和依赖管理在这里停留一段时间,它看起来像一个必备的技能这个行业。即使这只意味着为学生提供一个简单的POM并将它们引入到mvn clean/package/install :)

与使用构建工具相比,使用超过标准进行几乎任何Java开发库。如果你想让你的学生在校外生存,并且我确定你想让他们学习,那么在你的教材中包含一个构建工具。

我个人会选择Gradle,因为它可以用于Gradle包装,因此不需要安装。给他们一个样本项目,建立一个可执行的jar,并告诉他们如何构建和运行项目。