关于scala工程结构(使用sbt)
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)的更多相关文章
- Scala构建工具SBT
SBT(Simple Build Tool)是Scala的项目构建工具,拥有依赖管理,构建过程管理和打包等功能. SBT官网上给出各平台的安装方法: MAC: 使用homebrew安装 brew in ...
- Scala构建工具sbt的配置
时间是17年12月24日.初学Scala,想使用它的标配构建工具sbt,结果好大一轮折腾,因为公司隔离外网,需要内部代理,所以尤其折腾.下面的配置参考了好多篇不同的文章,已经没法一一留下出处了.而且还 ...
- 使用SBT构建Scala应用(转自git)
# 使用SBT构建Scala应用 ## SBT简介 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣, ...
- 【原】SBT构建Scala应用
[转帖] 原文地址:https://github.com/CSUG/real_world_scala/blob/master/02_sbt.markdown 尊重版权,尊重他人劳动成果,转帖请注明原文 ...
- 使用SBT构建Scala应用【转载】
使用SBT构建Scala应用 SBT简介 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣,但完成的工 ...
- Spark开发环境搭建(IDEA、Scala、SVN、SBT)
软件版本 软件信息 软件名称 版本 下载地址 备注 Java 1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow ...
- sbt介绍与构建Scala项目
一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...
- ubuntu14.04server下安装scala+sbt工具
安装sbt参考https://www.cnblogs.com/wrencai/p/3867898.html 在安装scala时 首先得安装jdk环境,最好安装最新版本以免后续安装出现不必要的麻烦 一. ...
- Scala 基础(二):sbt介绍与构建Scala项目
一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...
随机推荐
- UVA - 122 Trees on the level (二叉树的层次遍历)
题意:给定结点值和从根结点到该结点的路径,若根到某个叶结点路径上有的结点输入中未给出或给出超过一次,则not complete,否则层次遍历输出所有结点. 分析:先建树,建树的过程中,沿途结点都申请了 ...
- 如何修改 Vmware vRealize Operations Manager Appliance root密码
开机后,按上下键,选择 中间那一项,在底部增加:init=/bin/bash 进入单用户模式后,输入命令:# passwd root #修改root密码,要输 ...
- 使用NlohmannJson写JSON保留插入顺序
1. 正文 nlohmann/json是一个C++的读写JSON的组件,号称使用现代C++范式写的.简单看了一下,这个组件确实包含了很多cpp11以上的特性,在vs2015及一下的版本甚至没办法正常编 ...
- 3种python调用其他脚本的方法,你还知道其他的方法吗?
1.用python调用python脚本 #!/usr/local/bin/python3.7 import time import os count = 0 str = ('python b.py') ...
- Android Studio真机调试安装以后打开闪退,打包APK再安装正常打开没有问题
一直真机调试都没有问题, 但是有一次开始,真机调试正常安装没有问题,但是一打开就崩溃了一眨眼间就像被光闪了一下的那种. oppoR11调试会这样,但是用魅族试过没有问题, 报错出现过Android S ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 信号处理
信号是由操作系统传给进程的中断,会提早终止一个程序.在 UNIX.LINUX.Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断. 有些信号不能被程序捕获,但是下表所列信 ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 函数
函数是一组一起执行一个任务的语句.每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您 ...
- JavaScript获取当前日期前后7天的日期
function fun_date(aa){ var date1 = new Date(), time1=date1.getFullYear()+"-"+(date1.getMon ...
- 图床工具PicGO实现七牛云图片上传
图床工具PicGO实现七牛云图片上传 我们在写博客或者网络文章时经常需要上传图片.目前最有名气的图床工具就是PicGO. 简单的界面,完整的功能,在相册里也能直接复制markdown图片链接.一直深受 ...
- Day2-T2
原题目 Describe:贪心,保证至少一条路牛的数量最多 code: #include<bits/stdc++.h> using namespace std; long long n,m ...