maven 打包的用法:maven install
当你年老时,你是否常常想,要是年轻时多努力下该好。
maven 打包的用法:maven install
sbt真是慢出翔啊,没法忍,开代理也是慢的一比,网上各种教程也尼玛不太行,搞了一晚上,记录下来。
就按照我说的来别问为什么,我也不知道。
~/.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
sbt -Dsbt.override.build.repos=true
console
-Dsbt.override.build.repos=true
/usr/local/Cellar/sbt/0.13.13/libexec/sbt-launch.jar
build.properties
晚上扫了一眼任正非的《我的父亲母亲》真是感动的不行。
来自:https://www.jianshu.com/p/8d3ded620051
当一开始安装配置好 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
创建文件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
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
命令进行交互模式
# 在交互模式中能够运行常见的命令,例如,进行compile: > compile
其它常见命令:
clean | 删除所有生成的文件 (在 target 目录下)。 |
compile | 编译源文件(在 src/main/scala 和 src/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.sbt, project/*.scala, project/*.sbt 这些文件中定义的内容)。在修改了构建定义文件之后需要重新加载。 |
参考:https://www.cnblogs.com/codingexperience/p/5372617.html
sbt是类似ANT、MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具。
主要特性:
下载地址:官网 ,安装方法:
### 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>
配置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
一、需要准备的东西
1. JDK
2. Eclipse
3. Maven程序包
二、官网下载:
http://maven.apache.org/download.cgi
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。Hadoop的MapReduce环境是一个复杂的编程环境,所以我们要尽可能地简化构建MapReduce项目的过程。
Maven是一个很不错的自动化项目构建工具,通过Maven来帮助我们从复杂的环境配置中解脱出来,从而标准化开发过程。所以,写MapReduce之前,让我们先花点时间把刀磨快!!当然,除了Maven还有其他的选择Gradle(推荐), Ivy….
摘自百科: