在本机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. 128、View 绘制流程 & 自定义View

    记清楚函数调用的顺序才能准确地进行调用. 根据调用链,可将整个绘制过程分为三部分:Measure - Layout - Draw Measure 过程 1. 测量过程由上至下,在measure过程的最 ...

  2. Qt编写echart仪表盘JS交互程序支持webkit和webengine(开源)

    Echart是百度研发团队开发的一款报表视图JS插件,功能十分强大,是本人用过的国产作品中最牛逼的,记得四五年前就在qt中使用过,当时用的浏览器控件是webkit,由于5.6以后的版本不再支持webk ...

  3. 四、K3 Cloud 开发插件《K3 Cloud事件、方法、函数》

    1.简单帐表/动态表单几个主要事件 //初始化 public override void Initialize() //构建动态列 public override BOS.Core.Report.Re ...

  4. ThinkPHP框架 系统规定的方法查询数据库内容!!同时也支持原生的SQL语句!

    <?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller{ ...

  5. VBS数组导出到Excel

    <script language="vbscript"> dim arr(9999,4) for i=0 to 9999 for j = 0 to 4 arr(i,j) ...

  6. 阿里云不同账号之间相同地域的VPC网络互访

    今天实际操作了一下,在这篇随笔中记录一下以备忘,主要参考阿里云帮助文档-不同账号下专有网络内网互通. 实现场景:账号A的VPC网络中的ECS访问账号B的VPC网络中的ECS与RDS(地域都在华东1), ...

  7. ubuntu为文件添加可执行权限

    为一个文件添加可执行权限 chmod +x filename 为一个文件夹下的所有文件添加可执行权限 chmod +x *

  8. oracle的存储过程

    plsql中执行无参数存储过程格式: begin tttttttttttttt;end; 在执行记录表中 select *from v$sqlarea t where t.sql_text like ...

  9. PostgreSQL源码安装文档

    This document describes the installation of PostgreSQL using the source    code distribution. (If yo ...

  10. ArcGIS拓扑检查

    对于拓扑检查中的等级参数一直不理解,经过参考资料才明白过来: 注:如果有两个要素参与到拓扑,在修复拓扑错误时会优先移动拓扑级别低的要素来满足匹配拓扑规则要求. 参考资料: https://wenku. ...