scala_project:
常用目录结构:
  |lib:手动添加依赖包
  |project
  |  |build.properties:build的版本号,可以不写,会自动下载
  |  |plugins.sbt:需要添加的插件,包括sbt的插件(addSbtPlugin),否则sbt gen-idea、assembly命令不能执行(Not a valid command: assembly)
  |  |build.scala:功能类似于build.sbt,声明工程文件,同时通过setting方式设定工程名字、版本、依赖(需要Dependencies文件)等信息
  |src
  |  |main
  |    |resources:工程的配置文件,sbt工程默认读取该目录下配置文件(ConfigFactory.load(),ConfigFactory.parseFile(),生成config)
  |    |scala
  |    |java
  |  |test
  |    |resources
  |    |scala
  |    |java
  |target:生成工程jar包和idea工程的xml
  |build.sbt:工程name、version、scalaVersion、libraryDependencies等

注意:build.sbt和build.scala可以取一即可。

一、使用build.sbt搭建工程:

A.build.sbt(每行以空行分割)

import sbtassembly.Plugin.AssemblyKeys._
import sbt.Keys._

name:="config_read"

version:="1.1"

scalaVersion:="2.10.1"

assemblySettings//需要指定,否则sbt assembly命令无效

jarName in assembly:="scalatest_20170818.jar"

mainClass in assembly:=Some("MyTest")

libraryDependencies+="com.typesafe"%"config"%"1.2.1"  //依赖的第三方包

libraryDependencies+="org.slf4j"%"slf4j-api"%"1.7.7"  //依赖的第三方包

B.plugins.sbt(每行以空行分割)

//需要留空行,以下为sbt构建、编译、打包必须的插件
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")

addSbtPlugin("de.johoop" % "jacoco4sbt" % "2.1.5")

C.build.properties(指定sbt版本)

sbt.version=0.13.7

二、使用build.scala

目录结构(一个工程下多个子工程):

|project

|BuildProject.scala

|Dependencies.scala

|plugins.sbt

|build.properties

|Common.scala

|rdd_proj

|date_goodsstatistic

|src

|mian

|resources

|scala

|java

|date_salaryincharge

|src

|main

|resources

|scala

|java

A.BuikdProject.scala(该文件为scala文件object,依赖于Dependencies)

import sbt.Keys._
import sbt._
import sbtassembly.AssemblyKeys._

object BuildProject extends Build {

lazy val goodsstatistic= project.in(file("rdd_proj/date_goodsstatistic")).settings(name := "date_goodsstatistic").
  settings(Common.settings: _*).
  settings(libraryDependencies ++= Dependencies.sparkCounterDependencies).
  settings(assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)).
  settings(assemblyJarName in assembly := s"date_goodsstatistic_1.2.1.jar")

lazy val salaryincharge = project.in(file("rdd_proj/date_salaryincharge")).settings(name := "date_salaryincharge").
  settings(Common.settings: _*).
  settings(libraryDependencies ++= Dependencies.sparkCounterDependencies).
  settings(assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)).
  settings(assemblyJarName in assembly := s"date_salaryincharge_1.3.1.jar")

}

B.Dependencies.scala(该文件为scala文件object)

import sbt._

object Dependencies {

val sparkDependencies: Seq[ModuleID] = Seq(

"org.apache.spark" % "spark-core" % "2.0.0" %“provided,test”,

"org.apache.spark" % "hadoop-common" % "2.11-2.0.2"% "provided,test",//provided指明环境含有该依赖包,本地test时需要下载,打包时不需要

"org.apache.spark" % "spark-hive" % "2.11-2.0.2"% "provided,test")

val featureDependencies:Seq[MoudleID]=Seq(

"org.scalatest" %% "scalatest" % "2.2.4" % "test",

"mysql" % "mysql-connector-java" % "5.1.31" % "test")

val sparkCounterDependencies:Seq[MoudleID]=sparkDependencies++featureDependencies:Seq

}

C.plugins.sbt(同一)

D.build.properties(同一)

E.Common.scala(可以指定scalaVersion)

关于scala工程结构(使用sbt)的更多相关文章

  1. Scala构建工具SBT

    SBT(Simple Build Tool)是Scala的项目构建工具,拥有依赖管理,构建过程管理和打包等功能. SBT官网上给出各平台的安装方法: MAC: 使用homebrew安装 brew in ...

  2. Scala构建工具sbt的配置

    时间是17年12月24日.初学Scala,想使用它的标配构建工具sbt,结果好大一轮折腾,因为公司隔离外网,需要内部代理,所以尤其折腾.下面的配置参考了好多篇不同的文章,已经没法一一留下出处了.而且还 ...

  3. 使用SBT构建Scala应用(转自git)

    # 使用SBT构建Scala应用 ## SBT简介 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣, ...

  4. 【原】SBT构建Scala应用

    [转帖] 原文地址:https://github.com/CSUG/real_world_scala/blob/master/02_sbt.markdown 尊重版权,尊重他人劳动成果,转帖请注明原文 ...

  5. 使用SBT构建Scala应用【转载】

    使用SBT构建Scala应用 SBT简介 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣,但完成的工 ...

  6. Spark开发环境搭建(IDEA、Scala、SVN、SBT)

    软件版本 软件信息 软件名称 版本 下载地址 备注 Java 1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow ...

  7. sbt介绍与构建Scala项目

    一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...

  8. ubuntu14.04server下安装scala+sbt工具

    安装sbt参考https://www.cnblogs.com/wrencai/p/3867898.html 在安装scala时 首先得安装jdk环境,最好安装最新版本以免后续安装出现不必要的麻烦 一. ...

  9. Scala 基础(二):sbt介绍与构建Scala项目

    一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...

随机推荐

  1. Docker入门以及漏洞环境搭建(10.23 第二十五天)

    Docker:开源的应用程序容器引擎,使用Go语言.借助于docker打包的应用程序,将这些应用程序 包含在容器里面,在容器中实现虚拟化,容器使用的是沙箱机制,相互独立,占用资源非常少. Docker ...

  2. 使用pip install jupyter报错处理办法及修改Jupyter默认加载路径的方法

    1.配置python环境之后想使用Jupyter,网上查看可以使用pip install Jupyter安装,执行命令行后正常安装,安装到一半以后报错,如图1.2 图1 图2 2.发现是安装过程中安装 ...

  3. Python的一些常用知识

    1.How to force urllib2 not to use a proxy Here is an example to remove proxy settings for all reques ...

  4. Swift Json解析与model互转

    Json的解码与编码操作,这里使用swift自带的类JSONDecoder 和 JSONEncoder 1.基础处理 如果你的 JSON 数据结构和你使用的 Model 对象结构一致的话,那么解析过程 ...

  5. maven详解之仓库

    在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件. Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库.(仓库就是存放依赖和插件的地方) 任何的 ...

  6. [Updating]点分治学习笔记

    Upd \(2020/2/15\),又补了一题 LuoguP2664 树上游戏 \(2020/2/14\),补了一道例题 LuoguP3085 [USACO13OPEN]阴和阳Yin and Yang ...

  7. 雷火神山直播超两亿,Web播放器事件监听是怎么实现的?

    Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播.在视频业务大数据平台中,播放数据的统计分析非常重要,所以We ...

  8. 【题解】Acting Cute

    题目简介 正在 rainbow 的城堡游玩的 Freda 恰好看见了在地毯上跳舞卖萌的水叮当--于是-- Freda:"呜咕>_< 我也要卖萌T_T!" rainbow ...

  9. Ubuntu Vi指令

    Ubuntu在不更新源的情况下是没办法使用Vim指令的只能使用Vi指令 所有我也就记录了下来 vi / vim命令: 插入内容: i: 插入光标前一个字符 I: 插入行首 a: 插入光标后一个字符 A ...

  10. 1 ~ express ~ 初始化。安装第三方模块express。中间件

    一,初始化 二,安装第三方模块express 三,安装中间件 1,bodyParser : 解析 post 请求数据 2,cookies : 读写 cookie 3,swig :模板解析引擎 4,mo ...