idea导入nodejs插件_sbt 项目导入问题
1 Overview
有用過(guò) sbt 開(kāi)發(fā)項(xiàng)目的同學(xué)應(yīng)該都有這樣的體會(huì),換個(gè)環(huán)境,sbt 經(jīng)常會(huì)出現(xiàn)編譯項(xiàng)目出錯(cuò)的情況,導(dǎo)入 IDEA 又各種報(bào)錯(cuò),尤其是在 github 上找到一個(gè) sbt 編譯的項(xiàng)目,想 clone 下來(lái)導(dǎo)入 IDEA 中閱讀源碼,跑跑測(cè)試用例,debug 進(jìn)去看看實(shí)現(xiàn)原理等等...
總之一句話,sbt 的項(xiàng)目很麻煩,甚至是見(jiàn)到 sbt 的項(xiàng)目就想躲。
2 問(wèn)題分析
其實(shí)以上的情況是筆者之前經(jīng)常遇到的問(wèn)題,所以下定決定花點(diǎn)時(shí)間解決這個(gè)問(wèn)題。
首先要明白 sbt 其實(shí)是一個(gè) Scala 或者 Java 的一個(gè)構(gòu)建工具,使用上的目的和方式其實(shí)跟 Maven 是大相徑庭的,如果你是 Maven 的老司機(jī),要解決 sbt 的問(wèn)題,應(yīng)該不難。
2.1 sbt 本地問(wèn)題
其實(shí)只要 sbt 在本地可以對(duì)項(xiàng)目進(jìn)行構(gòu)建,就應(yīng)該不存在 IDEA 構(gòu)建不了的問(wèn)題。所以正常的下載安裝 sbt 的流程應(yīng)該是這樣的。
關(guān)于第三點(diǎn),這里詳細(xì)解釋一下,正常來(lái)說(shuō) sbt 安裝目錄應(yīng)該是以下這樣的。
? sbt tree . ├── bin │ ├── java9-rt-export.jar │ ├── sbt │ ├── sbt-launch-lib.bash │ ├── sbt-launch.jar │ └── sbt.bat ├── conf │ ├── sbtconfig.txt │ └── sbtopts └── lib└── local-preloaded// 這里不詳細(xì)列出來(lái)了跟 Maven 一樣,sbt 有個(gè)叫 sbtconfig.txt 的文件,看文件名就知道,這個(gè)是 sbt 的配置文件。這個(gè)文件初始的樣子是這樣的。
# Set the java args to high-Xmx512M-XX:MaxPermSize=256m-XX:ReservedCodeCacheSize=128m# Set the extra SBT options-Dsbt.log.format=true# 這是我自己添加的 -Dsbt.repository.config=/usr/local/sbt/conf/repositories注意最后一行的參數(shù)是筆者添加的,這里是告訴 sbt,jar 包和 sbt 插件的倉(cāng)庫(kù)地址,這里跟 Maven 也是一樣的,可以給 sbt 添加阿里云鏡像或者其他倉(cāng)庫(kù)。這里看看這個(gè)文件的具體內(nèi)容。
[repositories] local maven-central nexus-aliyun:http://maven.aliyun.com/nexus/content/groups/public sbt-plugins-repo: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]以上的倉(cāng)庫(kù)基本夠用(至少筆者是夠用的),如果還需要其他倉(cāng)庫(kù)(公司倉(cāng)庫(kù)),可以自行添加。更多 sbt 配置參數(shù)可以參考官方文檔。這里需要提示,當(dāng)用命令行構(gòu)建項(xiàng)目的時(shí)候,上述參數(shù)應(yīng)該是這樣的格式 -Dprop=value,以下是我構(gòu)建項(xiàng)目的時(shí)候,輸入命令的一個(gè)例子。
sbt -Dsbt.override.build.repos=true -Dsbt.repository.config=/usr/local/sbt/conf/repositories另外還需要注意的一點(diǎn)是,sbt 很多插件沒(méi)有發(fā)布到中央倉(cāng)庫(kù),阿里云鏡像也沒(méi)有去同步這些插件倉(cāng)庫(kù),如果你不配置上述文件的 sbt-plugins-repo 的倉(cāng)庫(kù)地址,基本上就不要指望可以構(gòu)建項(xiàng)目成功了,這個(gè)也是 sbt 項(xiàng)目比較坑的一個(gè)地方。關(guān)于這些插件倉(cāng)庫(kù),地址其實(shí)已經(jīng)不是上述文件那樣了,只是他會(huì)自動(dòng)跳轉(zhuǎn)到目前的域名,因?yàn)檫@些倉(cāng)庫(kù)已經(jīng)走商業(yè)化模式了,所以原來(lái)的倉(cāng)庫(kù)會(huì)有一定的限制,需要留意一下。
2.2 IDEA sbt 的配置問(wèn)題
如果在本地都能構(gòu)建項(xiàng)目成功,那么在 IDEA 中也應(yīng)該成功,因?yàn)?IDEA 是支持 sbt 項(xiàng)目的。但這里會(huì)有一些坑需要注意一下的。
不管是導(dǎo)入還是創(chuàng)建新的 sbt 項(xiàng)目,都應(yīng)該檢查一下 IDEA 的 sbt 配置,這里以筆者的配置為例。
注意需要留意的是 sbt-lauch.jar,如果不配置,那么用的是 IDEA 的內(nèi)置的 sbt,為了更靈活的配置 sbt 的一些設(shè)置,建議還是使用自己下載安裝的 sbt,并且設(shè)置 VM 參數(shù),原理等同于上節(jié)說(shuō)的命令行模式的參數(shù)。這里就不多做解釋了,官網(wǎng)是有專門(mén)介紹的。
2.3 一些測(cè)試
為了測(cè)試 sbt 的配置是否正確了,建議利用 IDEA 創(chuàng)建和導(dǎo)入一個(gè) sbt 項(xiàng)目,尤其是導(dǎo)入一個(gè)開(kāi)源的 sbt 項(xiàng)目,因?yàn)檫@些項(xiàng)目相對(duì)比較復(fù)雜,sbt 的配置文件中包含了大量的插件和 jar 包,如果可以一次構(gòu)建成功,那么 sbt 的配置就應(yīng)該是沒(méi)有問(wèn)題了,以后如果碰到問(wèn)題了,就仔細(xì)閱讀錯(cuò)誤日志,其實(shí)最多的問(wèn)題就是倉(cāng)庫(kù)配置不對(duì),導(dǎo)入插件和 jar 無(wú)法下載,最終導(dǎo)入構(gòu)建失敗。
3 Summary
本文主要介紹了 sbt 的配置和踩坑經(jīng)歷,碰到 sbt 構(gòu)建失敗不要輕易放棄,畢竟 sbt 的動(dòng)態(tài)編譯還是很爽的...
有任何問(wèn)題歡迎留言私信或者郵件到 runzhliu@163.com。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的idea导入nodejs插件_sbt 项目导入问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 三个变量互换值_Python3 教程 变
- 下一篇: sts 创建webservice项目_常