

# Scala的项目模板

> 译者：[flink.sojb.cn](https://flink.sojb.cn/)


## 构建工具

Flink项目可以使用不同的构建工具构建。为了快速入门，Flink为以下构建工具提供了项目模板：

*   [SBT](#sbt)
*   [Maven](#maven)

这些模板可帮助您设置项目结构并创建初始构建文件。

## SBT

### 创建项目

您可以通过以下两种方法之一构建新项目：

*   [使用**sbt模板**](#sbt_template)
*   [运行**快速入门脚本**](#quickstart-script-sbt)



```
 $ sbt new tillrohrmann/flink-project.g8 
```



这将提示您输入几个参数（项目名称，flink版本...），然后从[flink-project模板](https://github.com/tillrohrmann/flink-project.g8)创建一个Flink项目。您需要sbt> = 0.13.13才能执行此命令。如有必要，您可以按照此[安装指南](http://www.scala-sbt.org/download.html)获取。



```
 $ bash <(curl https://flink.apache.org/q/sbt-quickstart.sh) 
```



This will create a Flink project in the **specified** project directory.

### 构建项目

要构建项目，您只需发出`sbt clean assembly`命令即可。这将在**target / scala_your-major-scala-version /**目录中创建fat-jar **your-project-name-assembly-0.1-SNAPSHOT.jar**。

### 运行项目

要运行项目，您必须发出`sbt run`命令。

默认情况下，这将在运行的同一JVM中运行您的作业`sbt`。要在不同的JVM中运行您的作业，请添加以下行`build.sbt`



```
fork in run := true
```



#### 的IntelliJ

我们建议您使用[IntelliJ](https://www.jetbrains.com/idea/)进行Flink作业开发。要开始，您必须将新创建的项目导入IntelliJ。您可以通过`File -&gt; New -&gt; Project from Existing Sources...`然后选择项目目录来执行此 算子操作。然后，IntelliJ将自动检测`build.sbt`文件并设置所有内容。

为了运行Flink作业，建议选择`mainRunner`模块作为**运行/调试配置**的类路径。这将确保所有设置为_提供的_依赖项在执行时可用。您可以配置**运行/调试配置**通过`Run -&gt; Edit Configurations...`，然后选择`mainRunner`从_模块的使用类路径_的Dropbox。

#### Eclipse

要将新创建的项目导入[Eclipse](https://eclipse.org/)，首先必须为其创建Eclipse项目文件。这些项目文件可以通过[sbteclipse](https://github.com/typesafehub/sbteclipse)插件创建。将以下行添加到您的`PROJECT_DIR/project/plugins.sbt`文件中：



```
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
```



在`sbt`使用以下命令创建Eclipse项目文件



```
> eclipse
```



现在，您可以通过项目将项目导入Eclipse `File -&gt; Import... -&gt; Existing Projects into Workspace`，然后选择项目目录。

## Maven

### 要求

唯一的要求是使用**Maven 3.0.4**（或更高版本）和**Java 8.x**安装。

### 创建项目

使用以下命令之一**创建项目**：

*   [使用**Maven原型**](#maven-archetype)
*   [运行**快速入门脚本**](#quickstart-script)



```
 $ mvn archetype:generate                               \
      -DarchetypeGroupId=org.apache.flink              \
      -DarchetypeArtifactId=flink-quickstart-scala     \
      -DarchetypeCatalog=https://repository.apache.org/content/repositories/snapshots/ \
      -DarchetypeVersion=1.7-SNAPSHOT 
```



这允许您**命名新创建的项目**。它将以交互方式询问您groupId，artifactId和包名称。



```
 $ curl https://flink.apache.org/q/quickstart-scala-SNAPSHOT.sh | bash -s 1.7-SNAPSHOT
```



**注意**：对于Maven 3.0或更高版本，不再可以通过命令行指定存储库（-DarchetypeCatalog）。如果要使用SNAPSHOT存储库，则需要向settings.xml添加存储库条目。有关此更改的详细信息，请参阅[Maven官方文档](http://maven.apache.org/archetype/maven-archetype-plugin/archetype-repository.html)

### 检查项目

您的工作目录中将有一个新目录。如果您使用了_curl_方法，则会调用该目录`quickstart`。否则，它的名称为`artifactId`：



```
$ tree quickstart/
quickstart/
├── pom.xml
└── src
    └── main
        ├── resources
        │   └── log4j.properties
        └── scala
            └── org
                └── myorg
                    └── quickstart
                        ├── BatchJob.scala
                        └── StreamingJob.scala
```



示例项目是一个**Maven项目**，它包含两个类：_StreamingJob_和_BatchJob_是_DataStream_和_DataSet_程序的基本框架程序。的_主要_方法是程序的入口点，无论是对在-IDE测试/执行并作适当的部署。

我们建议您**将此项目导入IDE**。

IntelliJ IDEA支持Maven开箱即用，并为Scala开发提供插件。根据我们的经验，IntelliJ为开发Flink应用程序提供了最佳体验。

对于Eclipse，您需要以下插件，您可以从提供的Eclipse Update Sites安装这些插件：

*   _Eclipse 4.x_
    *   [Scala IDE](http://download.scala-ide.org/sdk/lithium/e44/scala211/stable/site)
    *   [m2eclipse的-Scala](http://alchim31.free.fr/m2e-scala/update-site)
    *   [构建Helper Maven插件](https://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-buildhelper/0.15.0/N/0.15.0.201207090124/)
*   _Eclipse 3.8_
    *   [用于Scala 2.11的](http://download.scala-ide.org/sdk/helium/e38/scala211/stable/site)[Scala IDE](http://download.scala-ide.org/sdk/helium/e38/scala210/stable/site)或[用于Scala 2.10的Scala IDE](http://download.scala-ide.org/sdk/helium/e38/scala210/stable/site)
    *   [m2eclipse的-Scala](http://alchim31.free.fr/m2e-scala/update-site)
    *   [构建Helper Maven插件](https://repository.sonatype.org/content/repositories/forge-sites/m2e-extras/0.14.0/N/0.14.0.201109282148/)

### 构建项目

如果要**构建/打包项目**，请转到项目目录并运行' `mvn clean package`'命令。您将**找到一个**包含您的应用程序**的JAR文件**，以及您可能已作为依赖项添加到应用程序的连接器和库：`target/&lt;artifact-id&gt;-&lt;version&gt;.jar`。

**注意：**如果您使用与_StreamingJob_不同的类作为应用程序的主类/入口点，我们建议您相应地更改文件中的`mainClass`设置`pom.xml`。这样，Flink可以从JAR文件运行时间应用程序，而无需另外指定主类。

## 下一步

写你的申请！

如果您正在编写流处理应用程序并且正在寻找灵感来写什么，请查看[流处理应用程序教程](https://flink.sojb.cn/tutorials/datastream_api.html#writing-a-flink-program)

如果您正在编写批处理应用程序，并且正在寻找要编写的内容，请查看[批处理应用程序示例](https://flink.sojb.cn/dev/batch/examples.html)

有关API的完整概述，请查看 [DataStream API](https://flink.sojb.cn/dev/datastream_api.html)和 [DataSet API](https://flink.sojb.cn/dev/batch/index.html)部分。

[在这里，](https://flink.sojb.cn/tutorials/local_setup.html)您可以了解如何在本地群集上的IDE外部运行应用程序。

如果您有任何问题，请在我们的 [邮件列表中查询](http://mail-archives.apache.org/mod_mbox/flink-user/)。我们很乐意提供帮助。

