小工具      在线工具  汉语词典  css  js  c++  java

sbt编程语言scala的构建工具配置及项目构建(附带网盘下载)

大数据,scala,开发语言,后端 额外说明

收录于:158天前

SBT简介

SBT是Scala的构建工具,它的全称是Simple Build Tool,类似于Maven或Gradle。

Java可以使用Maven快速构建项目,Scala可以使用SBT快速构建Scala项目。

sbt下载官网

百度网盘链接:https://pan.baidu.com/s/1eJkdWndZ0izcd3waqA2hdQ
提取码:oeq1

在这里插入图片描述

SBT参数配置

配置本地目录:

在config目录下追加内容

在这里插入图片描述

-Dsbt.log.format=true
-Dfile.encoding=UTF8
-Dsbt.global.base=e:/sbt/.sbt
-Dsbt.boot.directory=e:/sbt/.sbt/boot/
-Dsbt.repository.config=e:/sbt/.sbt/repo.properties
-Dsbt.ivy.home=e:/sbt/.ivy2
-Dsbt.override.build.repos=true
-Xmx512M
-Xss2M
-XX:+CMSClassUnloadingEnabled

如果有路径,设置为本地路径即可。

设置阿里巴巴镜像(新的repo.properties)

新创建的目录必须与上面配置的目录相对应。

[repositories]
local
aliyun: 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

java.io.IOException: failed to create lock file e:\Scala\sbt-1.7.2\repo\boot\sbt.boot.lock

java.io.IOException: failed to create lock file e:\Scala\sbt-1.7.2\repo\boot\sbt.boot.lock
        at xsbt.boot.Locks$.liftedTree1$1(Locks.scala:43)
        at xsbt.boot.Locks$.apply0(Locks.scala:41)
        at xsbt.boot.Locks$.apply(Locks.scala:36)
        at xsbt.boot.Launch.locked(Launch.scala:393)
        at xsbt.boot.Launch.getAppProvider(Launch.scala:304)
        at xsbt.boot.Launch.app(Launch.scala:216)
        at xsbt.boot.Launch.app(Launch.scala:214)
        at xsbt.boot.Launch$.run(Launch.scala:140)
        at xsbt.boot.Launch$.$anonfun$apply$1(Launch.scala:44)
        at xsbt.boot.Launch$.launch(Launch.scala:159)
        at xsbt.boot.Launch$.apply(Launch.scala:44)
        at xsbt.boot.Launch$.apply(Launch.scala:21)
        at xsbt.boot.Boot$.runImpl(Boot.scala:78)
        at xsbt.boot.Boot$.run(Boot.scala:73)
        at xsbt.boot.Boot$.main(Boot.scala:21)
        at xsbt.boot.Boot.main(Boot.scala)
Caused by: java.io.IOException: 系统找不到指定的路径。
        at java.io.WinNTFileSystem.createFileExclusively(Native Method)
        at java.io.File.createNewFile(File.java:1012)
        at xsbt.boot.Locks$.liftedTree1$1(Locks.scala:41)
        ... 15 more
[error] [launcher] error during sbt launcher: java.io.IOException: failed to create lock file e:\Scala\sbt-1.7.2\repo\boot\sbt.boot.lock

Dsbt.repository.config=e:/sbt/.sbt/repo.properties在本地设置时/是在Linux系统的路径,在window中要使用\。例如本地配置

# sbt configuration file for Windows

# Set the java args

#-mem 1024 was added in sbt.bat as default

#-Xms1024m
#-Xmx1024m
#-Xss4M
#-XX:ReservedCodeCacheSize=128m

# Set the extra sbt options

# -Dsbt.log.format=true

-Dsbt.log.format=true
-Dfile.encoding=UTF8
-Dsbt.global.base=d:\Scala\sbt-1.7.2\repo\base
-Dsbt.boot.directory=d:\Scala\sbt-1.7.2\repo\boot
-Dsbt.repository.config=d:\Scala\sbt-1.7.2\repo\repo.properties
-Dsbt.ivy.home=d:\Scala\sbt-1.7.2\repo\.ivy2
-Dsbt.override.build.repos=true

该错误是由路径问题引起的。未找到路径或路径配置不正确。注意修改一下。

安装完成测试

  • 若sbt配置了环境变量直接在dos下输入sbt
  • 未配置环境变量在sbt的bin目录下输入sbt

在这里插入图片描述>出现上面界面即配置完成

IDEA 基于sbt构建scala项目

基于IDEA的创建方式需要全局配置sbt,即配置环境变量。
在这里插入图片描述
之后版本选择与本地版本对应就行了

在这里插入图片描述

第一次加载时间会很长。切换到阿里巴巴镜像会更快。

【切换阿里镜像】找到用户资料的文件夹下的.sbt文件夹

在这里插入图片描述
创建repo.properties文件:

[repositories]
local
Nexus osc : http://maven.oschina.net/content/groups/public/
Nexus osc thirdparty : http://maven.oschina.net/content/repositories/thirdparty/
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
typesafe2: http://repo.typesafe.com/typesafe/releases/
sbt-plugin: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/
sonatype: http://oss.sonatype.org/content/repositories/snapshots
uk_maven: http://uk.maven.org/maven2/
ibibli: http://mirrors.ibiblio.org/maven2/
repo2: http://repo2.maven.org/maven2/

添加镜像后,重启项目并刷新sbt

[info] loading settings for project untitled1 from build.sbt ...
[info] set current project to untitled1 (in build file:/D:/Scala/ScalaProjects/untitled1/)
[warn] there's a key that's not used by any other settings/tasks:
[warn]
[warn] * untitled1 / idePackagePrefix
[warn]   +- D:\Scala\ScalaProjects\untitled1\build.sbt:7
[warn]
[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
[info] sbt server started at local:sbt-server-fe2e6dcb84198d6f4b31
[info] started sbt server
sbt:untitled1>
;set _root_.scala.collection.Seq(historyPath := None,shellPrompt := { _ => "" }
,SettingKey[_root_.scala.Option[_root_.sbt.File]]("sbtStructureOutputFile") in _root_.sbt.Global := _root_.scala.Some(_root_.sbt.file("C:/Users/fireapproval/AppData/Local/Temp/sbt-structure.xml")),SettingKey[_root_.java.lang.String]
("sbtStructureOptions") in _root_.sbt.Global := "download, resolveClassifiers, resolveSbtClassifiers")
[info] Defining Global / sbtStructureOptions, Global / sbtStructureOutputFile and 1 others.
[info] The new values will be used by cleanKeepGlobs
[info] 	Run `last` for details.
[info] Reapplying settings...
[info] set current project to untitled1 (in build file:/D:/Scala/ScalaProjects/untitled1/)
[info] Applying State transformations org.jetbrains.sbt.CreateTasks from C:/Users/fireapproval/AppData/Roaming/JetBrains/IntelliJIdea2021.2/plugins/Scala/repo/org/jetbrains/scala/sbt-structure-extractor_2.12_1.0/2021.1.1/sbt-structure-extractor-2021.1.1.jar
[info] Reapplying settings...
[info] set current project to untitled1 (in build file:/D:/Scala/ScalaProjects/untitled1/)
[warn] sbt 0.13 shell syntax is deprecated; use slash syntax instead: Global / dumpStructure
[info] Writing structure to C:\Users\fireapproval\AppData\Local\Temp\sbt-structure.xml...
[info] Done.
[success] Total time: 1 s, completed 2023-1-23 18:47:10
[info] shutting down sbt server


在这里插入图片描述

如果出现以上信息,则说明构建成功。

搭建好的项目如图所示:

在这里插入图片描述

基于Maven构建

再新建选择Maven-----------------》选择从原型构建----------》------------》scala-archtype-simple

在这里插入图片描述

下一步
在这里插入图片描述
maven配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打开项目结构,选择全局库,点击+号,导入下载的scala文件(scala.zip解压的文件夹,是scala-sdk)
在这里插入图片描述

导入后,应该如上图所示。

找不到org.scala-tools:maven-scala-plugin该插件

如果找不到插件,只需导入以下两个依赖即可:

<!-- https://mvnrepository.com/artifact/org.scala-tools/maven-scala-plugin -->
    <dependency>
      <groupId>org.scala-tools</groupId>
      <artifactId>maven-scala-plugin</artifactId>
      <version>2.11</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-eclipse-plugin -->
    <dependency>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-eclipse-plugin</artifactId>
      <version>2.5.1</version>
    </dependency>

导入后,清理并编译。

构建完成的目录结构:
在这里插入图片描述

注意创建完毕之后,自带App静态对象,继承了Application

package scala;

public interface Application extends ScalaObject {
    
    void main(String[] var1);

    long executionStart();

    void executionStart_$eq(long var1);
}

这就造成了scala的语法问题,这是由于IDEA插件自动生成的pom文件中scala的版本是2.7,如最新版本语法不一样,这里需要修改成与本地scala一致的版本号。sdk导入的版本号在哪里?

在这里插入图片描述

修改为本地scala版本。

scalac: bad constant pool index: 318 at pos: 2716

scalac: 
  bad constant pool index: 318 at pos: 2716
     while compiling: D:\Scala\ScalaProjects\scala-maven\src\test\scala\org\example\MySpec.scala
        during phase: globalPhase=typer, enteringPhase=namer
     library version: version 2.12.17
    compiler version: version 2.12.17
  reconstructed args: -classpath C:\Program Files\Java\jdk1.8.0_181\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\cldrdata.jar;C:\Program

== Source file context for tree position ==

     3 import org.specs._
     4 import org.specs.runner.{
    ConsoleRunner, JUnit4}
     5 
     6 class MySpecTest extends JUnit4(MySpec)
     7 //class MySpecSuite extends ScalaTestSuite(MySpec)
     8 object MySpecRunner extends ConsoleRunner(MySpec)
     9 

如果出现这个错误,是在没有修改pom的scala版本号的情况下编译的,导致test目录下出现一些旧的语法文件。

在这里插入图片描述
删除这些就可以了。

运行成功如下图:

在这里插入图片描述

至此,maven构建scala项目就完成了。

IDEA中创建scala项目的三种方法

. . .

相关推荐

额外说明

Spring深入理解IOC等补充

前言 前面两篇博客针对Spring IOC做了大致的流程说明。 Spring深入理解之IOC、DI Spring深入理解之IOC创建并获取Bean IOC的作用在于Spring对Bean的创建和管理,其中分为三大块内容: BeanFactory: bea

额外说明

最新微信视频号视频下载方法介绍?

本文介绍视频号中的视频下载方法。 我们知道视频号中的视频是不能够直接下载或者保存的,所以我们只有借助于一些小技巧或者工具来进行保存到本地。 目录 一、准备工作 二、安装步骤 三、下载方法 一、准备工作 这个方法操作起来很简单,前提是需要你具备基础的Fid

额外说明

将博客移至CSDN

为了更好地记录文章,收藏以及记录技术知识,现将博客园文章同步至CSDN论坛 我的CSDN名称是:白菜!

额外说明

golang Gin学习打开所有接口的OPTION方法

golang Gin学习之开放所有接口的OPTIONS方法 背景 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、

额外说明

定时器

  在JDK中,Timer类的主要作用是设置计划任务,即在指定时间执行某个任务,它在内部使用多线程的方式进行处理,与Java多线程技术有着非常大的关联。   以下为Timer类的简单使用示例 public class TimerTest { p

额外说明

unity3d——角色移动控制

QQ 1285575001 Wechat M010527 技术交流 QQ群599020441 纪年科技aming

额外说明

< Python全景系列-9 > Python 装饰器:优雅地增强你的函数和类

欢迎来到我们的系列博客《Python全景系列》第九篇!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。 **

额外说明

java:判断数组中是否包含某元素

简洁的方法: public static void main(String[] args) { String[] arr = { "a","b","c","d"}; String stringValue = "d";

额外说明

Java Lambda 表达式快速学习

Lambda 表达式来源于数学, 因为其简洁性,很多开发语言都支持, Java 在版本8 开始引入。 Lamba 表达式是什么? 匿名内部类 接口只能有一个需要被实现的方法 Lamba 表达式作用 代码变得简洁 Lamba 表达式可以直接作为参数传递给函

额外说明

leetcode 939. 最小面积矩形

给定在 xy 平面上的一组点,确定由这些点组成的矩形的最小面积,其中矩形的边平行于 x 轴和 y 轴。 如果没有任何矩形,就返回 0。 示例 1: 输入:[[1,1],[1,3],[3,1],[3,3],[2,2]] 输出:4 示例 2: 输入:[[1,

ads via 小工具