[最新]使用 IDEA 從0到1搭建 Scala 開發環境(含打 Jar 包到 Linux 執行)

NBA首席形象大使阿坤發表於2020-12-19

前置環境:

名稱版本號
IDEAntelliJ IDEA 2020.1 x64
Maven3.6
LinuxCentOS 7.6
Linux Spark1.6
Linux Scala1.12.0
<------------------以下為正文------------------->

一、Windows平臺配置Scala

步驟:下載—>解壓—>配置環境變數—>cmd測試
1.點選連結下載Scala 2.11.8版本(提取碼:fwdx)
2.解壓到一個無中文、無空格的路徑,解壓
解壓
3.配置環境變數

  • 進入檔案,複製路徑
    複製路徑
  • 點選我的電腦,右鍵,點選高階系統設定,點選環境變數
    新增環境變數
  • 新建SCALA_HOME,注意變數名大寫,路徑詳細到能看見/bin目錄即可
    新建SCALA_HOME
  • 新增PATH中的環境變數,值:%SCALA_HOME%\bin
    環境變數
  • 完成後依次儲存即可。如果CMD不能調出來SCALA,可以同時新增系統和使用者的環境變數。
    同時 新增PATH
    4.CDM測試。按win鍵,輸入cmd,然後輸入scala。(SCALA依賴於JDK,如果沒有安裝JDK,也有可能導致失敗)
    CDM測試

二、IDEA配置Scala

步驟:退出所有專案—>下載Scala外掛—>重啟IDEA
1.點選IDEA左上角的file–>close project,退出所有專案,這一步是為了防止配置只對當前專案生效
2.下載Scala外掛

  • 點選Configure,選擇plugins(外掛)
    點選configure
  • 搜尋Scala,點選install,然後點選應用,重啟IDEA
    下載外掛

三、建立專案,並打包到Linux中

步驟:新建maven專案—>新建Scala檔案—>打包—>到Linux中執行
1.新建一個專案

  • 在IDEA新建專案,選擇Maven,點選模板,選擇Scala。(有時候可能沒有,其實不一定需要模板,可以後期自己新增Maven座標)
    新建Maven專案

  • 命名專案
    專案命名

  • 這裡是關於Maven的配置與本地倉庫設定,直接跳過即可
    Maven設定

  • 完成
    完成介面
    可能會報錯…因為有些依賴包找不到,我把修改後的依賴包放到文末了,直接複製貼上即可。

2.新建Scala工程

  • 選擇模板的話,預設有一個App.scala,沒有選擇模板的,新建Scala即可
  • 修改程式碼
package org.example

/**
 * Hello world!
 *
 */
object App {
  def main(args: Array[String]): Unit = {
    println( "Hello World!" )
  }
}
  • 可能會沒有Scala的直譯器,右上角點選file–>project structrue,手動指定直譯器
    在這裡插入圖片描述
  • 執行
    執行效果
    2.打包
  • 選擇IDEA右邊中間的Maven,點選package
    打包
  • 完成後目錄結構中會有一個target,目錄中有一個以專案名命名的jar包
    jar包
    3.執行:把jar包複製到Linux中執行(之前在伺服器測試是沒問題的,本機沒有Scala環境,簡單羅列一下步驟吧)
  • 上傳到 Linux當中。如果是大檔案,用xftp等專業工具傳輸,穩定,速度快。如果是小檔案,我推薦yum 安裝lrzsz ,安裝後可以直接使用sz命令上傳,也可以直接拖到Linux當中。
    安裝外掛命令:
yum -y install lrzsz
  • 執行指令碼。格式:spark-submit jar包路徑 --class 入口類名
spark-submit ./ScalaWordCount-1.0-SNAPSHOT.jar --class App

Maven座標配置檔案

<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>org.example</groupId>
  <artifactId>ScalaWordCount</artifactId>
  <version>1.0-SNAPSHOT</version>
  <inceptionYear>2008</inceptionYear>
  <properties>
    <scala.version>2.11.8</scala.version>
  </properties>

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

  <dependencies>
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>${scala.version}</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.4</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.specs</groupId>
      <artifactId>specs</artifactId>
      <version>1.2.5</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src/main/scala</sourceDirectory>
    <testSourceDirectory>src/test/scala</testSourceDirectory>
    <plugins>
      <plugin>
        <groupId>org.scala-tools</groupId>
        <artifactId>maven-scala-plugin</artifactId>
        <version>2.11</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>testCompile</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <scalaVersion>${scala.version}</scalaVersion>
          <args>
            <arg>-target:jvm-1.5</arg>
          </args>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <version>2.5.1</version>
        <configuration>
          <downloadSources>true</downloadSources>
          <buildcommands>
            <buildcommand>ch.epfl.lamp.sdt.core.scalabuilder</buildcommand>
          </buildcommands>
          <additionalProjectnatures>
            <projectnature>ch.epfl.lamp.sdt.core.scalanature</projectnature>
          </additionalProjectnatures>
          <classpathContainers>
            <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
            <classpathContainer>ch.epfl.lamp.sdt.launching.SCALA_CONTAINER</classpathContainer>
          </classpathContainers>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.scala-tools</groupId>
        <artifactId>maven-scala-plugin</artifactId>
        <version>2.11</version>
        <configuration>
          <scalaVersion>${scala.version}</scalaVersion>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
</project>

<-----------------本文完---------------->

相關文章