在本机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 the repositories 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工程实践的更多相关文章

  1. spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例

    下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...

  2. 基于menu小插件探索工程实践

    目录 一.准备工作 1.C/C++环境搭建 2.VSCode的配置 (1) 安装插件: (2) 设置配置文件: 二.工程化编程实战 1.模块化设计 2.可重用设计:进一步抽象 menu的进一步优化 可 ...

  3. panguan(判官):一个自研的任务执行引擎的工程实践

    来某厂接近半年了,几乎没写过C++代码,说实话还真的有点手生.最近刚好有一个需求,然而我感觉我也没有办法用C++以外的语言去实现它.于是还是花了几天时间用C++完成编码,这是一个简单的任务执行引擎,它 ...

  4. Linux开源模块迁移概述暨交叉编译跨平台移植总结--从《嵌入式Linux驱动模板简洁和工程实践》

    本文摘录<嵌入式Linux驱动模板简洁和工程实践>一本书"开发和调试技术". Linux强大的是,有那么多的开源项目可以使用.通常非常需要可以通过寻找相关的源模块被定义 ...

  5. LDA工程实践之算法篇之(一)算法实现正确性验证(转)

    研究生二年级实习(2010年5月)开始,一直跟着王益(yiwang)和靳志辉(rickjin)学习LDA,包括对算法的理解.并行化和应用等等.毕业后进入了腾讯公司,也一直在从事相关工作,后边还在yiw ...

  6. Android事件总线分发库EventBus3.0的简单讲解与实践

    Android事件总线分发库EventBus的简单讲解与实践 导语,EventBus大家应该不陌生,EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Han ...

  7. [ 搭建Redis本地服务器实践系列 ] :序言

    说起来,是在一个气候适宜的下午,虽然临近下班,不过办公室里还是充满了忙碌的身影,不时的还会从办公区传来小伙伴们为了一个需求而激烈争论的声音,自从入了互联网这个行业,说实话,也就很少休息了,当然了也不全 ...

  8. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

    上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Redis的初始化脚本文件及启动配置文件,并图解如何以服务的形式来启动.终止Redis服务,可以说我们的 ...

  9. webpack 从入门到工程实践

    from:https://www.jianshu.com/p/9349c30a6b3e?utm_campaign=maleskine&utm_content=note&utm_medi ...

随机推荐

  1. 【class2src】Decompiler

    方法源自:https://stackoverflow.com/questions/272535/how-do-i-decompile-java-class-files 功能:给定一个.class文件, ...

  2. 正确停掉 expdp 或 impdp

    1.查看视图dba_datapump_jobs SQL> set line 200 SQL> select job_name,state from dba_datapump_jobs; J ...

  3. npm更新升级

    更新 npm install npm -g

  4. Orleans学习总结(五)--监控篇

    上篇说完了Orleans学习总结(四)--集群配置篇,这次我们来说下监控 Orleans有一个强大的社区,为Orleans开发着各种各样的扩展工具,我们用的是OrleansDashboard.Dash ...

  5. 慢慢看Spring源码

    1. 要想在java技术上提升一下,不看一下java源码是不行的,jdk源码,框架源码等.但是源码那么多,专门去看源码肯定很枯燥,所以就得一点一点看,坚持下去.有一点心得就记一点,如org.sprin ...

  6. ubuntu部署php7.1

    先更新本机内置的程序. sudo apt-get updatesudo apt-get upgrade 安装PHP sudo add-apt-repository ppa:ondrej/php sud ...

  7. Python----八荣八耻

    以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻; 以模块复用为荣 , 以复制粘贴为耻; 以多态应用 ...

  8. db2 reorg到底需要多少表空间(转)

    脱机reorg需要一定的空间,这个空间与目标所在的数据表空间.索引表空间.以及临时表空间均有关,各空间需求的大小与表和索引所占用的数据页和索引页相关. (1)对表执行reorg操作如:db2 reor ...

  9. 队列 Queue JoinableQueue

    from multiprocessing import Process, Queue def f1(q); for  i   in range(10): q.put(i) def f2(q): whl ...

  10. 文本分类-TensorRT优化结果对比图

    做的文本二分类,使用tensorRT进行图优化和加速,输出预测概率结果对比如下: 从结果对比来看,概率值有微小的变化,但不影响最终的分类