搭建简单SBT工程实践
在本机jdk(主要配置环境变量)、scala(主要配置环境变量)、sbt(主要配置①私服repositories ②sbtconfig.txt)都已经安装且配置好的情况下。
repositories:
[repositories]
local
Ivy Repositories: http://xxxIP:port/repositories/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
Maven Repositories: http://xxxIP:port/repositories/
使用OSChina提供的Maven Center镜像库以及Ivy依赖,修改配置之前可以先备份本地原有配置。
(参考:https://segmentfault.com/a/1190000002474507)
[repositories]
local
oschina:http://maven.oschina.net/content/groups/public/
oschina-ivy:http://maven.oschina.net/content/groups/public/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
sonatype-oss-releases
maven-central
sonatype-oss-snapshots
可惜使用sbt命令后,依然出现依赖下载失败的情况:
看来ChinaOS不可用,修改为阿里云,发现可用:
[repositories]
local
nexus-aliyun:http://maven.aliyun.com/nexus/content/groups/public
nexus-aliyun-ivy:http://maven.aliyun.com/nexus/content/groups/public/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
sbtconfig.txt
(官方文档:http://www.scala-sbt.org/0.13/docs/Proxy-Repositories.html):
官方解释:http://www.scala-sbt.org/0.13/docs/Launcher-Configuration.html
# Set the java args to high -Xmx1024M #JVM最大允许分配的堆内存,按需分配 # Xms JVM初始分配的堆内存
-Xss10M #设置每个线程的堆栈大小 -XX:MaxPermSize=1024m #非堆区分配的内存的最大内存;持久代大小
-XX:ReservedCodeCacheSize=512m #代码缓存 # Set the extra SBT options -Dsbt.log.format=true -Dsbt.override.build.repos=true #This setting is used to specify that all sbt project added resolvers should be ignored in favor of those configured in therepositories
configuration. Using this with a properly configured -Dsbt.ivy.home=D:/Tools/sbt_project/ivy2 #ivy的cache等,保存到指定的文件夹;不配置的话sbt下载的jar包都会默认放到C盘的用户目录下 -Dfile.encoding=UTF8 -Dsbt.boot.directory=D:/Tools/sbt_project/boot #The directory defined here is used to store all cached JARs resolved launcher. -Dhttp.proxyHost=xxx.xxx.com #代理设置 -Dhttp.proxyPort=xx
第一种,建立好sbt工程,再用idea开发
1.按sbt规范,建好project、src等文件夹以及build.sbt、plugins.sbt文件,基本结构(官方文档(有中文版):http://www.scala-sbt.org/0.13/docs/zh-cn/Organizing-Build.html):
2.build.sbt 配置:
name := "SimpleApp" //任意 version := "1.0" // 任意 scalaVersion := "2.10.4" //与安装的scala版本对应
3.plugins.sbt 为了能使用sbt gen-idea 等命令,要引入相关的插件,配置:
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0") //sbt gen-idea addSbtPlugin("io.spray" % "sbt-revolver" % "0.7.2") addSbtPlugin("de.johoop" % "jacoco4sbt" % "2.1.5") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2") //sbt assembly
4.打开命令行,进入项目根目录,输入sbt gen-idea生成工程。
5.工程开发中要使用到配置文件
①在resource目录下建立application.conf文件
②要使用到com.typesafe.config的jar包,为了让sbt托管依赖。需要在build.sbt文件中添加依赖。
通过查http://mvnrepository.com,查到依赖写法:
libraryDependencies += "com.typesafe" % "config" % "1.3.0"
需要注意,com.typesafe.config的jar包是否还依赖其他jar包,如果有其他依赖,也需要引入。
第二种:通过Idea创建sbt工程
1.idea安装sbt插件:File->Settings->Plugins 搜索sbt,然后安装。(sbt插件版本和本地安装scala版本有关联)
2.新建sbt工程,选择工程所在路径、输入工程名即可:
自动生成sbt规范目录:
自动生成的build.sbt内容:
name := "Project_Test"
version := "1.0"
这样创建的工程,已经可以通过sbt命令行执行
sbt update
sbt compile
sbt package ……
还不可以执行sbt gen-idea(现在已经是idea工程,不执行gen-idea命令也没关系了)、 sbt assembly
如果需要gen-idea,在plugins.sbt配置相关插件(修改后立即生效)即可,例如:
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
添加完成后,如果执行sbt gen-idea 命令,由于build.sbt文件中没有配置scala版本,导致会去下载默认的一个scala的一些jar包。
在build.sbt文件中,设置scala版本:
scalaVersion in ThisBuild := "2.10.4"
3.为了打包 sbt assembly (只使用sbt的 package 命令打包,是不会把第三方库打包进去的,需要sbt的assembly pulgin,它的任务,就是负责把所有依赖的jar包都打成一个 fat jar)
在plugins.sbt文件中配置插件,例如:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
这样配置完后还不够,还需要在build.sbt中配置:
import sbtassembly.Plugin.AssemblyKeys._ assemblySettings jarName in assembly := "test_project.jar" mainClass in assembly := Some("com.test.Boot") //package 相对于,例如 src/main/scala目录
4.配置完成,进入工程所在目录,使用命令行执行sbt assembly,完成打包,包在工程目录的\target\scala-2.10下
使用assembly打包出来,包名一般为 配置的name.jar,package打包,包名一般为 name_scalaVersion前两段-version.jar
SimpleApp.jar
SimpleApp_2.10-1.0.jar
参考:
http://www.cnblogs.com/zhangqingping/p/4997324.html
搭建简单SBT工程实践的更多相关文章
- spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例
下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...
- 基于menu小插件探索工程实践
目录 一.准备工作 1.C/C++环境搭建 2.VSCode的配置 (1) 安装插件: (2) 设置配置文件: 二.工程化编程实战 1.模块化设计 2.可重用设计:进一步抽象 menu的进一步优化 可 ...
- panguan(判官):一个自研的任务执行引擎的工程实践
来某厂接近半年了,几乎没写过C++代码,说实话还真的有点手生.最近刚好有一个需求,然而我感觉我也没有办法用C++以外的语言去实现它.于是还是花了几天时间用C++完成编码,这是一个简单的任务执行引擎,它 ...
- Linux开源模块迁移概述暨交叉编译跨平台移植总结--从《嵌入式Linux驱动模板简洁和工程实践》
本文摘录<嵌入式Linux驱动模板简洁和工程实践>一本书"开发和调试技术". Linux强大的是,有那么多的开源项目可以使用.通常非常需要可以通过寻找相关的源模块被定义 ...
- LDA工程实践之算法篇之(一)算法实现正确性验证(转)
研究生二年级实习(2010年5月)开始,一直跟着王益(yiwang)和靳志辉(rickjin)学习LDA,包括对算法的理解.并行化和应用等等.毕业后进入了腾讯公司,也一直在从事相关工作,后边还在yiw ...
- Android事件总线分发库EventBus3.0的简单讲解与实践
Android事件总线分发库EventBus的简单讲解与实践 导语,EventBus大家应该不陌生,EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Han ...
- [ 搭建Redis本地服务器实践系列 ] :序言
说起来,是在一个气候适宜的下午,虽然临近下班,不过办公室里还是充满了忙碌的身影,不时的还会从办公区传来小伙伴们为了一个需求而激烈争论的声音,自从入了互联网这个行业,说实话,也就很少休息了,当然了也不全 ...
- [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis 介绍了Redis的初始化脚本文件及启动配置文件,并图解如何以服务的形式来启动.终止Redis服务,可以说我们的 ...
- webpack 从入门到工程实践
from:https://www.jianshu.com/p/9349c30a6b3e?utm_campaign=maleskine&utm_content=note&utm_medi ...
随机推荐
- 【class2src】Decompiler
方法源自:https://stackoverflow.com/questions/272535/how-do-i-decompile-java-class-files 功能:给定一个.class文件, ...
- 正确停掉 expdp 或 impdp
1.查看视图dba_datapump_jobs SQL> set line 200 SQL> select job_name,state from dba_datapump_jobs; J ...
- npm更新升级
更新 npm install npm -g
- Orleans学习总结(五)--监控篇
上篇说完了Orleans学习总结(四)--集群配置篇,这次我们来说下监控 Orleans有一个强大的社区,为Orleans开发着各种各样的扩展工具,我们用的是OrleansDashboard.Dash ...
- 慢慢看Spring源码
1. 要想在java技术上提升一下,不看一下java源码是不行的,jdk源码,框架源码等.但是源码那么多,专门去看源码肯定很枯燥,所以就得一点一点看,坚持下去.有一点心得就记一点,如org.sprin ...
- ubuntu部署php7.1
先更新本机内置的程序. sudo apt-get updatesudo apt-get upgrade 安装PHP sudo add-apt-repository ppa:ondrej/php sud ...
- Python----八荣八耻
以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻; 以模块复用为荣 , 以复制粘贴为耻; 以多态应用 ...
- db2 reorg到底需要多少表空间(转)
脱机reorg需要一定的空间,这个空间与目标所在的数据表空间.索引表空间.以及临时表空间均有关,各空间需求的大小与表和索引所占用的数据页和索引页相关. (1)对表执行reorg操作如:db2 reor ...
- 队列 Queue JoinableQueue
from multiprocessing import Process, Queue def f1(q); for i in range(10): q.put(i) def f2(q): whl ...
- 文本分类-TensorRT优化结果对比图
做的文本二分类,使用tensorRT进行图优化和加速,输出预测概率结果对比如下: 从结果对比来看,概率值有微小的变化,但不影响最终的分类