sbt问题-解决运行慢问题

sbt真是慢出翔啊,没法忍,开代理也是慢的一比,网上各种教程也尼玛不太行,搞了一晚上,记录下来。

Terminal

就按照我说的来别问为什么,我也不知道。

    • ~/.sbt下面创建repositories文件,内容如下:
[repositories]
local
osc: http://maven.aliyun.com/nexus/content/groups/public/
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
  • 打开终端,进入工程目录,有build.sbt那个
  • 执行sbt -Dsbt.override.build.repos=true
  • 执行console

IDEA

  • 在最开始的页面, 就是没打开任何工程的地方,右下角点Configure
  • 点Preference 左上角搜sbt
  • 点开sbt,VM parameter那添加-Dsbt.override.build.repos=true
  • Launcher那选择custom,添加自己的sbt,我的目录是/usr/local/Cellar/sbt/0.13.13/libexec/sbt-launch.jar
  • 如果版本不一致可修改工程里面的build.properties

晚上扫了一眼任正非的《我的父亲母亲》真是感动的不行。

 

来自:https://www.jianshu.com/p/8d3ded620051

 

sbt问题-Scala sbt run – “Unsupported major.minor version 52.0”

 

当一开始安装配置好 sbt时,刚在 终端 输入 sbt 命令 ,想启动sbt时就发现报错了。

[error] (run-main-0) java.lang.UnsupportedClassVersionError: akka/event/LogSource : Unsupported major.minor version 52.0
java.lang.UnsupportedClassVersionError: akka/event/LogSource : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2625)
        at java.lang.Class.getMethod0(Class.java:2866)
        at java.lang.Class.getMethod(Class.java:1676)

原因是,系统版本的jdk 与 sbt 不兼容,将系统中的 jdk 7 升级到 jdk 8 就行了。

参考:https://stackoverflow.com/questions/39197422/scala-sbt-run-unsupported-major-minor-version-52-0

sbt用法-基本命令与构建Scala项目

一、构建简单Scala项目

创建文件SimpleProject/hw.scala

object Hi{
  def main(args: Array[String]) = println("Hello world!")
}

运行

D:\MyCode\Scala\SimpleProject>sbt
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] Loading global plugins from C:\Users\test\.sbt\0.13\plugins
[info] Set current project to hello (in build file:/D:/MyCode/Scala/SimpleProject/)
> run
[info] Updating {file:/D:/MyCode/Scala/SimpleProject/}root...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 1 Scala source to D:\MyCode\Scala\BuildProject\target\scala-2.10\classes...
[info] Running Hi
Hello world!
[success] Total time: 43 s, completed 2016-4-9 20:16:21

二、构建完整Scala项目

sbt项目目录与Maven项目目录类似,创建下面的目录:

├── src
│  ├── main
│  │  ├── java
│  │  ├── resources
│  │  └── scala
│  ├── test
│  │  ├── java
│  │  ├── resources
│  │  └── scala
├── build.sbt
├── project
│  ├── build.properties
│  ├── plugins.sbt

其中bulid.sbt为构建定义,project目录是你的工程内另一个工程的项目,它知道如何构建你的工程,即project项目为元构建,相关文档为http://www.scala-sbt.org/0.13/docs/zh-cn/Organizing-Build.html

简单的bulid.sbt文件

name := "hello"      // 项目名称

organization := "xxx.xxx.xxx"  // 组织名称

version := "0.0.1"  // 版本号

scalaVersion := "2.10.6"   // 使用的Scala版本号

// 添加项目依赖
libraryDependencies += "ch.qos.logback" % "logback-core" % "1.0.0"

libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.0.0"

// 或者

libraryDependencies ++= Seq(
                            "ch.qos.logback" % "logback-core" % "1.0.0",
                            "ch.qos.logback" % "logback-classic" % "1.0.0",
                            ...
                            )

// 添加测试代码编译或者运行期间使用的依赖
libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "1.8" % "test")

创建项目目录并添加配置文件完成后,生成eclipse项目:在项目基目录下运行下列命令

sbt eclipse

通过上面的命令能够生成eclipse目录,使用eclipse导入项目,即可开始开发。

三、sbt的交互模式

在项目目录下运行sbt命令进行交互模式

# 在交互模式中能够运行常见的命令,例如,进行compile:
>  compile

其它常见命令:

clean 删除所有生成的文件 (在 target 目录下)。
compile 编译源文件(在 src/main/scalasrc/main/java 目录下)。
test 编译和运行所有测试。
console 进入到一个包含所有编译的文件和所有依赖的 classpath 的 Scala 解析器。输入 :quit, Ctrl+D (Unix),或者 Ctrl+Z (Windows) 返回到 sbt。
run <参数>* 在和 sbt 所处的同一个虚拟机上执行项目的 main class。
package src/main/resources 下的文件和 src/main/scala 以及 src/main/java 中编译出来的 class 文件打包成一个 jar 文件。
help <命令> 显示指定的命令的详细帮助信息。如果没有指定命令,会显示所有命令的简介。
reload 重新加载构建定义(build.sbtproject/*.scalaproject/*.sbt 这些文件中定义的内容)。在修改了构建定义文件之后需要重新加载。

参考:https://www.cnblogs.com/codingexperience/p/5372617.html

sbt概述与安装配置

一、sbt简介

sbt是类似ANT、MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具。

主要特性:

  1. 原生支持编译Scala代码和与诸多Scala测试框架进行交互;
  2. 使用Scala编写的DSL(领域特定语言)构建描述
  3. 使用Ivy作为库管理工具
  4. 持续编译、测试和部署
  5. 整合scala解释器快速迭代和调试
  6. 支持Java与Scala混合的项目

二、sbt下载安装

下载地址:官网  ,安装方法:

### mac平台 直接安装 ,自动设置了环境变量
$ brew install sbt@1
### 安装过程如下
cooldeMacBook-Pro:~ cool$ brew install sbt@1
==> Downloading https://github.com/sbt/sbt/releases/download/v1.2.6/sbt-1.2.6.tgz
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/27955

curl: (28) Connection timed out after 5004 milliseconds
Trying a mirror...
==> Downloading https://sbt-downloads.cdnedge.bluemix.net/releases/v1.2.6/sbt-1.2.6.tgz
######################################################################## 100.0%
==> Caveats
You can use $SBT_OPTS to pass additional JVM options to sbt.
Project specific options should be placed in .sbtopts in the root of your project.
Global settings should be placed in /usr/local/etc/sbtopts
==> Summary
🍺  /usr/local/Cellar/sbt/1.2.6: 521 files, 49.8MB, built in 51 seconds
cooldeMacBook-Pro:~ cool$ 


# =============================
## 非 mac 平台,下载后解压到自己定义的文件夹,然后将解压目录的bin目录加入PATH环境

# Linux环境,使用`sudo vim /etc/profile`打开配置文件,添加下面的命令
export SBT_HOME=/opt/sbt
export path=path:$SBT_HOME/bin

# Windows 平台 打开高级系统设置,
# 在环境变量中添加系统变量
# SBT_HOME  =>   D:\sbt
# 并加入path路径,
# path=> path;%SBT_HOME%\bin

检验是否安装成功:使用sbt命令,该命令会执行一段时间,下载jar包,加载插件,最后查看是否进行交互界面,如下所示:

skydeMacBook-Pro:~ sky$ sbt
[info] Updated file /Users/cool/project/build.properties: set sbt.version to 1.2.6
[info] Loading settings for project global-plugins from idea.sbt ...
[info] Loading global plugins from /Users/cool/.sbt/1.0/plugins
[info] Updating ProjectRef(uri("file:/Users/cool/.sbt/1.0/plugins/"), "global-plugins")...
[info] Done updating.
[info] Loading project definition from /Users/cool/project
[info] Updating ProjectRef(uri("file:/Users/cool/project/"), "cool-build")...
[info] Done updating.
[info] Set current project to cool (in build file:/Users/cool/)
[info] sbt server started at local:///Users/cool/.sbt/1.0/server/a50398cff041de74d7d0/sock
sbt:cool> 

三、sbt简单配置

配置ivy目录:
可以对sbt进行配置,能够配置ivy的文件目录,ivy是sbt的默认管理项目依赖工具,它默认是在user home下建立library repository【我看到的默认目录变成了用户根目下面的–> .ivy2 】,但用户可以配置ivy的library local repository。

修改sbt配置文件: [sbt安装目录]/conf/sbtconfig.txt,在配置文件中添加一行

-Dsbt.ivy.home=[你自己挑选的目录]/repository

 配置镜像库:
感觉sbt运行时会从maven官网下载大量的jar包,可能会非常缓慢,可以添加国内的maven库,从而能够加快运行速度,在”~/.sbt”下创建repositories文件,添加下面的内容:

[repositories]
local                         # 本地ivy库
maven-local: file://~/.m2/repository       # 本地Maven库 
osc: http://maven.aliyun.com/nexus/content/groups/public/    #阿里云的maven库,用于加快速度
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有自己的插件,这里介绍能够生成eclipse目录的插件:sbteclipse插件https://github.com/typesafehub/sbteclipse。

添加sbteclipse插件可以通过两种方式添加:

配置全局文件:~/.sbt/0.13/plugins/plugins.sbt
配置项目文件: PROJECT_DIR/project/plugins.sbt

# 只要在其中一个文件添加 下面的一行 就行了
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
# 安装sbteclipse插件后可以在sbt交互界面使用`eclipse`命令生成eclipse项目

 

参考:

https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Mac.html

https://www.cnblogs.com/codingexperience/p/5372617.html

 

maven安装与配置

一、需要准备的东西

1. JDK

2. Eclipse

3. Maven程序包

二、官网下载:
http://maven.apache.org/download.cgi

System Requirements

Java Development Kit (JDK) Maven 3.3+ require JDK 1.7 or above to execute – they still allows you to build against 1.3 and other JDK versions by Using Toolchains
Memory No minimum requirement
Disk Approximately 10MB is required for the Maven installation itself. In addition to that, additional disk space will be used for your local Maven repository. The size of your local repository will vary depending on usage but expect at least 500MB.
Operating System No minimum requirement. Start up scripts are included as shell scripts and Windows batch files.

因为 安装包是 java 写的,里面的启动文件 即有 Windows的mvn.cmd 也有linux的mvn  所以没有 按不同的系统发布不同的安装包。

 

Maven概述

由于学习大数据需要Maven,所以先简单学习一下Maven。Hadoop的MapReduce环境是一个复杂的编程环境,所以我们要尽可能地简化构建MapReduce项目的过程。

Maven是一个很不错的自动化项目构建工具,通过Maven来帮助我们从复杂的环境配置中解脱出来,从而标准化开发过程。所以,写MapReduce之前,让我们先花点时间把刀磨快!!当然,除了Maven还有其他的选择Gradle(推荐), Ivy….

摘自百科:

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。