我怎么SBT使用本地的maven代理库
发布网友
发布时间:2022-04-22 17:23
我来回答
共1个回答
热心网友
时间:2022-04-08 00:21
1. OK(确定),由马克・哈拉帮助SBT邮件列表上,我有问题的解答。 我生成类现在看起来如下(其他回购):import sbt._
//By extending DefaultWebProject, we get Jetty support
class OurApplication(info: ProjectInfo) extends DefaultWebProject(info) {
// This skips adding the default repositories and only uses the ones you added
// explicitly. --Mark Harrah
override def repositories = Set("OurNexus" at " CodeGo.net
override def ivyRepositories = Seq(Resolver.defaultLocal(None)) ++ repositories
/* Squeryl */
val squeryl = "org.squeryl" % "squeryl_2.8.0.RC3" % "0.9.4beta5"
/* DATE4J */
val date4j = "hirondelle.date4j" % "date4j" % "1.0" from " CodeGo.net
// etc
}
现在,如果我从我的机器的删除Squeryl树.ivy2/cache目录中,SBT试图从树上抓住它与相应的URL。问题解决了!
2. 所有你需要的是定义一个属性文件sbt.boot.properties这将允许您: 重新定义ivy缓存的位置(我需要,这将是我们的漫游Windows配置文件,这是strict*在我们的商店磁盘空间的其他部分。请参见问题74) 定义你想要的任何其他的Maven回购 C:\\家庭用品\\ APPS \\ SBT-0.74 \\ sbt.boot.properties [阶] 版本:2.7.7 #分类:来源 CodeGo.net,则javadoc [应用] 组织结构:org.scala-tools.sbt SBT 版本:阅读(sbt.version) 等级:sbt.xMain 成分:xsbti 跨版本:真 分类:来源,则javadoc [仓库] 当地 我的[机构] / [模块] / [修订版] / [类型] S / [神器]。(-[分类])[转] Maven的本地 #SBT-DB:[组织] / [模块] / [修订版] / [类型] S / [神器](-[分类])[转] #Maven的* #scala-工具-版本 #scala-工具-快照 [引导] 目录:项目/开机 特性:项目/ build.properties中 提示创建:项目不存在,创建新项目吗? 提示填写:真实 快速选项:真 [日志] 级别:调试 [APP-性质] 项目。快速=套(测试),新=提示(补=提示( 新=提示(组织)[org.vonc] project.version:快速=套(1.0),新=提示(版)[1.0]补=提示(版)[1.0] build.scala.versions:快速=套(2.8.0.RC2),新=提示(scala版)[2.8.0.RC2]补=提示(scala版)[2.8.0.RC2] sbt.version:快速=套(0.7.4),新=提示(SBT版)[0.7.4]补=提示(SBT版)[0.7.4] project.scratch:快速=套(真) project.initialize:快速=集(真),新=集(真) [ivy] 高速缓存目录:C:\\家庭用品\\工程\\ ivy2 \\缓存 注:本sbt.boot.properties文件是从启发: 对在SBT项目的“广义启动器”页面。 一个内发现sbt-0.74本身! 我有任何外部Maven仓库的定义,并增加了一个参考我自己的Maven回购。 该launch器可在增加优先顺序的下列方式之一进行配置: 更换/sbt/sbt.boot.properties在文件jar。 把配置文件sbt.boot.properties在类路径中。把它在classpath根无/sbt前缀。 指定的行的另一种结构的位置。这可以这样做: 要么指定位置的系统属性sbt.boot.properties或作为优先到'前缀launch@'。 系统属性具有较低的优先级。 相对路径的解析是: 优先个试图对当前的工作目录, 然后针对目录, 然后对包含该launch器的jar的目录。 会产生一个错误,如果没有这些尝试 定义一个sbt.bat包装(以确保指定您的sbt.boot.properties),如:C:\HOMEWARE>more C:\HOMEWARE\bin\sbt.BAT
@echo off
set t=%~dp0
set adp0=%t:C:\="%"
set SBT_DIR=%adp0%..\apps\sbt-0.74
dir C:\%SBT_DIR%\sbt-launch-0.7.4.jar
# if needed, add your proxy settings
set PROXY_OPTIONS=-Dhttp.proxyHost=my.proxy -Dhttp.proxyPort=80xx -Dhttp.proxyUser=auser -Dhttp.proxyPassword=yyyy
set JAVA_OPTIONS=-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx512M -cp C:\HOMEWARE\apps\sbt-0.74\sbt-launch-0.7.4
set SBT_BOOT_PROPERTIES=-Dsbt.boot.properties="sbt.boot.properties"
cmd /C C:\HOMEWARE\apps\jdk4eclipse\bin\java.exe %PROXY_OPTIONS% %JAVA_OPTIONS% %SBT_BOOT_PROPERTIES% -jar C:\HOMEWARE\apps\sbt-0.74\sbt-launch-0.7.4.jar %*
和你的SBT只会从下载神器: 您的 本地Maven回购。 刚刚测试了与旧开源1.6我已经运行,JAVA 1.6,sbt07.4C:\Prog\Java\jdk1.6.0_18\jre\bin\java -Xmx512M -Dsbt.boot.properties=sbt.boot.properties - jar "c:\Prog\Scala\sbt\sbt-launch-0.7.4.jar"
这给:[success] Build completed successfully.
C:\Prog\Scala\tests\pp>sbt
Getting Scala 2.8.0 ...
downloading CodeGo.net
8.0.jar ...
[SUCCESSFUL ] org.scala-lang#scala-compiler;2.8.0!scala-compiler.jar (311ms)
downloading CodeGo.net
0.jar ...
[SUCCESSFUL ] org.scala-lang#scala-library;2.8.0!scala-library.jar (185ms)
:: retrieving :: org.scala-tools.sbt#boot-scala
confs: [default]
2 artifacts copied, 0 already retrieved (14484kB/167ms)
[info] Building project test 0.1 against Scala 2.8.0
[info] using sbt.DefaultProject with sbt 0.7.4 and Scala 2.7.7
如果我尝试一个有趣的值在sbt.boot.properties文件:C:\Prog\Scala\tests\pp>sbt
Getting Scala 2.9.7 ...
:: problems summary ::
:::: WARNINGS
mole not found: org.scala-lang#scala-compiler;2.9.7
==== nexus: tried
CodeGo.net
-- artifact org.scala-lang#scala-compiler;2.9.7!scala-compiler.jar:
CodeGo.net
所以它会*自己的两个回购我定义:[repositories]
nexus: CodeGo.net
nexus2: CodeGo.net [organization]/[mole]/[revision]/[type]s/[artifact](-[classifier]).[ext]
(我一切:local,maven-local,...) 如果我所有的仓库,把一个有趣的值(2.7.9)的阶版本的sbt.boot.properties,我也弄(如OP一样)C:\Prog\Scala\tests\pp>sbt
Error ring sbt execution: No repositories defined.
如果我把2.7.7(同时还具有所有回购是的,它不会产生错误:C:\Prog\Scala\tests\pp>sbt
[info] Building project test 0.1 against Scala 2.8.0
[info] using sbt.DefaultProject with sbt 0.7.4 and Scala 2.7.7
但是,这只是它已经有了在我尝试下载scala2.8.0。 如果我删除该库从我project/boot目录中,那么它会抛出一个异常:[info] using sbt.DefaultProject with sbt 0.7.4 and Scala 2.7.7
> C:\Prog\Scala\tests\pp>sbt
Error ring sbt execution: No repositories defined.
at xsbt.boot.Pre$.error(Pre.scala:18)
at xsbt.boot.Update.addResolvers(Update.scala:197)
...
at xsbt.boot.Boot$.main(Boot.scala:15)
at xsbt.boot.Boot.main(Boot.scala)
Error loading project: Error ring sbt execution: No repositories defined.
3. 嗯,这已经有一段让我发现,写了一个SBT插件maven了github上称为Maven的SBT一个家伙,所以你需要做的是将其包含在你的插件项目,使您的项目混入与maven.MavenDependencies和所有您的操作,如更新和发布本地与本地Maven的工作。有关的好处是,如果你是为所有的maven。所以,你的库是在你的本地Maven回购,但如果因为你的原因与构建SBT优先,然后你开始在ivy一堆或罐子了。什么空间浪费,因为你仍然需要让他们为你的Maven构建。 这就是说,我想这是内置到SBT所以我不需要把它添加到每个项目。也许作为一个处理器至少。在有一件事,我读了他想将它添加到0.9,但我一直没能找到它。
4. 第1步:按照在具体议题的说明:代理库,这是我总结并加入如下: (如果你的Artifactory,你可以跳过这一步。)在您的企业Maven仓库创建一个完全独立的Maven代理库(或一组),以代理ivy样式的库,如这两个重要的: 这是必要的储存库管理者不能处理ivy样式和Maven样式的仓库被混合在一起。 创建一个文件repositories,并列出你的主要的企业资源库,您在步骤1中创建,在如下所示的格式的任何额外的一种:[repositories]
my-maven-proxy-releases: CodeGo.net
my-ivy-proxy-releases: CodeGo.net [organization]/[mole]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
无论是保存在该文件.sbt目录中的目录里面,或者就行指定它:sbt -Dsbt.repository.config=<path-to-your-repo-file>