文档章节

SBT+IDEA Scala开发环境搭建

clebeg
 clebeg
发布于 2015/10/27 10:09
字数 1011
阅读 1972
收藏 5

SBT+IDEA Scala开发环境搭建

前言

利用 IDEA 开发 Scala程序有一段时间了,老是有一个问题困扰着我,那就是Idea里面的 SBT 使用的配置根本没有使用我自己下载的 SBT 里面的配置,导致 Idea 里面新建 sbt 项目总是无法使用代理下载依赖,从而使得下载失败。我只能 每次都在外面使用 cmd,先 sbt update 然后 gen-idea 然后再加载到 Idea。效率之地下,让人吐血。今天狠下心来, 一定要把这个问题攻破。

常规SBT配置

首先下载SBT,解压到你想要安装的地方,我的安装目录如下:

D:\softwares\dev\java\sbt>dir
 驱动器 D 中的卷是 NewDisk
 卷的序列号是 0E5B-9C07

 D:\softwares\dev\java\sbt 的目录

2015/10/16  11:14    <DIR>          .
2015/10/16  11:14    <DIR>          ..
2015/09/06  09:02    <DIR>          bin
2015/10/19  19:07    <DIR>          boot
2015/09/06  09:02    <DIR>          conf
2015/10/19  20:22    <DIR>          ivy2
               0 个文件              0 字节
               6 个目录 150,068,903,936 可用字节

从解压的目录中立即可以发现,bin 目录和 conf 目录,毫无疑问,bin 目录就是执行文件所在目录
进入 bin 目录,看到 sbt.bat, 这个文件就是 windows 的 sbt 执行文件,查看一下里面的内容,发现如下信息:

@REM SBT launcher script
@REM
@REM Envioronment:
@REM JAVA_HOME - location of a JDK home dir (mandatory)
@REM SBT_OPTS  - JVM options (optional)
@REM Configuration:
@REM sbtconfig.txt found in the SBT_HOME.

@REM   ZOMG! We need delayed expansion to build up CFG_OPTS later
@setlocal enabledelayedexpansion

@echo off
set SBT_HOME=%~dp0

rem FIRST we load the config file of extra options.
set FN=%SBT_HOME%\..\conf\sbtconfig.txt
set CFG_OPTS=
FOR /F "tokens=* eol=# usebackq delims=" %%i IN ("%FN%") DO (
  set DO_NOT_REUSE_ME=%%i
  rem ZOMG (Part #2) WE use !! here to delay the expansion of
  rem CFG_OPTS, otherwise it remains "" for this loop.
  set CFG_OPTS=!CFG_OPTS! !DO_NOT_REUSE_ME!
)

rem We use the value of the JAVACMD environment variable if defined
set _JAVACMD=%JAVACMD%

if "%_JAVACMD%"=="" (
  if not "%JAVA_HOME%"=="" (
    if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"
  )
)

if "%_JAVACMD%"=="" set _JAVACMD=java

#这里可以看出当 JAVA_OPTS 这个环境变量设置了的话就会不会使用 config 里面的环境变量了
rem We use the value of the JAVA_OPTS environment variable if defined, rather than the config.
set _JAVA_OPTS=%JAVA_OPTS%
if "%_JAVA_OPTS%"=="" set _JAVA_OPTS=%CFG_OPTS%

:run

#最后执行行调用 java %JAVA_OPTS% %SBT-OPTS% %SBT_HOME%sbt-lauch.jar
"%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -cp "%SBT_HOME%sbt-launch.jar" xsbt.boot.Boot %*
if ERRORLEVEL 1 goto error
goto end

:error
@endlocal
exit /B 1


:end
@endlocal
exit /B 0

从代码中可以发现最重要的配置文件就是 %SBT_HOME%..\conf\sbtconfig.txt ,所以第一步就是
设置环境变量:

SBT_HOME=D:\softwares\dev\java\sbt

修改配置文件 conf/sbtconfig.txt

一些常见的配置可以在网上查到,从上面分析可以看出里面就是设置一些 JAVA_OPTS,下面是我的配置:

# 设置 jvm 内存

-Xmx512M

-XX:MaxPermSize=256m

-XX:ReservedCodeCacheSize=128m



# 其他的sbt参数

-Dsbt.log.format=true
-Dhttp.proxyHost=proxy.tencent.com
-Dhttp.proxyPort=8080
-Dhttps.proxyHost=proxy.tencent.com
-Dhttps.proxyPort=8080

# 设置boot目录以及ivy本地仓库地址
-Dsbt.boot.directory=D:/softwares/dev/java/sbt/boot/
-Dsbt.ivy.home=D:/softwares/dev/java/sbt/ivy2/

修改 idea.exe.vmoptions/idea64.exe.vmoptions

然而上面的一切对 Idea 来说不起作为,原因是 Idea 直接调用的就是 sbt-launch.jar 根本没有参数可言,
为了使idea能够修改 sbt-launch.jar 中的默认参数,一方面是修改 sbt-launch.jar 中的配置文件,另一个途径
就是修改 idea 全局 vmoptions。这个文件在 Idea 安装目录 bin 目录下面,一个对应 32 位, 一个对应 64 位,
对应修改之后变为如下:

-Xms128m
-Xmx750m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=225m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Dsbt.log.format=true

-Dhttp.proxyHost=proxy.tencent.com
-Dhttp.proxyPort=8080
-Dhttps.proxyHost=proxy.tencent.com
-Dhttps.proxyPort=8080
-Dsbt.boot.directory=D:/softwares/dev/java/sbt/boot/
-Dsbt.ivy.home=D:/softwares/dev/java/sbt/ivy2/

下面重新启动Idea测试一下效果。 似乎没什么用,干脆直接修改 sbt-launch.jar 文件中 sbt 目录下面的 sbt.boot.properties 文件

[scala]
  version: ${sbt.scala.version-auto}

[app]
  org: ${sbt.organization-org.scala-sbt}
  name: sbt
  version: ${sbt.version-read(sbt.version)[0.13.5]}
  class: ${sbt.main.class-sbt.xMain}
  components: xsbti,extra
  cross-versioned: ${sbt.cross.versioned-false}
  resources: ${sbt.extraClasspath-}

[repositories]
  local
  typesafe-ivy-releases: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
  maven-central

[boot]
  directory: D:/softwares/dev/java/sbt/boot/

[ivy]
  ivy-home: D:/softwares/dev/java/sbt/ivy2/
  checksums: ${sbt.checksums-sha1,md5}
  override-build-repos: ${sbt.override.build.repos-false}
  repository-config: ${sbt.repository.config-${sbt.global.base-${user.home}/.sbt}/repositories}

再测试一下效果。搞定

参考资料

http://9leg.com/scala/2015/10/17/scala-play-setting.html

© 著作权归作者所有

clebeg
粉丝 45
博文 40
码字总数 40057
作品 0
广州
程序员
私信 提问
细说 scala 开发环境

细说 scala 开发环境 前言 每个人有每个人的悲剧,我的悲剧就是选择 ScalaIDE + Maven 作为 Scala 开发环境,导致折腾到吐血。回想一下选择IDE的理由: 方便编写代码(这是最基本的,各种快捷...

clebeg
2015/10/16
148
0
本地windows跑Scala程序调用Spark

应用场景 spark是用scala写的一种极其强悍的计算工具,spark内存计算,提供了图计算,流式计算,机器学习,即时查询等十分方便的工具,所以利用scala来进行spark编程是十分必要的,下面简单书...

wsc449
2017/11/21
0
0
windows 安装 spark 及 PyCharm IDEA 调试 TopN 实例

首先声明本文搭建的环境为:windows8.1 + spark1.6.0 + python2.7 + jdk8,spark on windows 对 windows及python版本不怎么挑,但是对 spark 版本要求极其苛刻,比如 spark1.6.1 就无法运行。...

大数据之路
2012/06/28
1K
0
Kafka开发环境搭建(五)

如果你要利用代码来跑kafka的应用,那你最好先把官网给出的example先在单机环境和分布式环境下跑通,然后再逐步将原有的consumer、producer和broker替换成自己写的代码。所以在阅读这篇文章前...

老先生二号
2017/05/29
0
0
安装scala eclipse plugin导致pom.xml editor打开失败

一 问题描述 在本机搭建了基于Scala的Eclipse Plugin+scala2.10.3的开发环境, 但打开maven项目pom.xml文件时,却报空指针异常, pom editor打开失败. 查找了网上的一些资料,发现这是scala-ide...

cloud-coder
2014/03/17
352
0

没有更多内容

加载失败,请刷新页面

加载更多

观点 | 用 MySQL 数据库,到底会不会被“卡脖子”?

>作者:明溪源 **用 MySQL 数据库,到底会不会被“卡脖子”?** 在近期不明朗的贸易形势下,一些正在规划数据库选型、迁移的用户,纷纷询问我们对 MySQL 未来前景的看法。那么使用 MySQL 数据...

爱可生
17分钟前
3
0
千万级流量架构下的负载均衡解析

一、负载均衡 负载均衡算法 转发实现 二、集群下的 Session 管理 Sticky Session Session Replication Session Server 一、负载均衡 集群中的应用服务器(节点)通常被设计成无状态,用户可以...

李红欧巴
21分钟前
62
0
一元建站-基于函数计算 + wordpress 构建 serverless 网站

前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云函数计算平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS, 一键部署等能力, 展现函...

阿里云官方博客
23分钟前
1
0
Spring Security 整合JWT(四)

一、前言 本篇文章将讲述Spring Security 简单整合JWT 处理认证授权 基本环境 spring-boot 2.1.8 mybatis-plus 2.2.0 mysql 数据库 maven项目 Spring Security入门学习可参考之前文章: Spri...

郑清
24分钟前
3
0
零基础怎么玩转可视化大屏?这个工具只需5步!

大屏可视化怎么这么火?领导天天要,业务人员、开发人员、IT页面师就得一块熬夜加班,要是不会做大屏,都不好意思说自己做报表、做IT。 也许有人会告诉你,可视化大屏可以用JS+Ecahrts编程实...

朕想上头条
26分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部