本地人工代理背后的sbt

本地人工代理背后的sbt,sbt,artifactory,ivy,Sbt,Artifactory,Ivy,使用本地artifactory/maven代理设置sbt项目时,我看到以下消息: 为了指定sbt项目中添加的所有解析器 将被忽略,以支持在存储库中配置的 配置,将以下配置选项添加到sbt 启动程序脚本: -Dsbt.override.build.repos=true 将以下内容添加到build.sbt文件: resolvers += "Artifactory" at "http://url/artifactory/virtualRepository/" 但我想实现的是一种类似于maven的

使用本地artifactory/maven代理设置sbt项目时,我看到以下消息:

为了指定sbt项目中添加的所有解析器 将被忽略,以支持在存储库中配置的 配置,将以下配置选项添加到sbt 启动程序脚本:

-Dsbt.override.build.repos=true
将以下内容添加到build.sbt文件:

resolvers += 
"Artifactory" at "http://url/artifactory/virtualRepository/"
但我想实现的是一种类似于maven的行为,即不是手动重写SBT文件中的解析器,而是通过配置。 这也可能吗?如果是,怎么做? 期望的行为

  • 在没有本地人工代理的情况下,项目应该可以很好地编译
  • 当在存储库中可用/配置时,应将本地存储库用作源/缓存,以便更快地访问
目前,我只获得sbt插件的未解析依赖项:

::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.scalariform#sbt-scalariform;1.6.0: not found
[warn]  :: org.scoverage#sbt-scoverage;1.5.0: not found
[warn]  :: org.scalastyle#scalastyle-sbt-plugin;0.8.0: not found
[warn]  :: net.virtual-void#sbt-dependency-graph;0.8.2: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
警告

[warn]  module not found: org.scalariform#sbt-scalariform;1.6.0
[warn] ==== typesafe-ivy-releases: tried
[warn]   https://repo.typesafe.com/typesafe/ivy-releases/org.scalariform/sbt-scalariform/scala_2.10/sbt_0.13/1.6.0/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.scalariform/sbt-scalariform/scala_2.10/sbt_0.13/1.6.0/ivys/ivy.xml
[warn] ==== local: tried
[warn]   d:\users\heilerg\.ivy2\local\org.scalariform\sbt-scalariform\scala_2.10\sbt_0.13\1.6.0\ivys\ivy.xml
[warn] ==== my-ivy-proxy-releases: tried
[warn]   http://url/artifactory/virtualRepositoryScala/org.scalariform/sbt-scalariform/scala_2.10/sbt_0.13/1.6.0/ivys/ivy.xml
[warn] ==== my-maven-proxy-releases: tried
[warn]   http://url/artifactory/virtualRepositoryScala/org/scalariform/sbt-scalariform_2.10_0.13/1.6.0/sbt-scalariform-1.6.0.pom
[warn] ==== Artima Maven Repository: tried
[warn]   http://repo.artima.com/releases/org/scalariform/sbt-scalariform_2.10_0.13/1.6.0/sbt-scalariform-1.6.0.pom
[info] Resolving org.scoverage#sbt-scoverage;1.5.0 ...
SBT日志将显示

 [ERROR] (o.a.r.RemoteRepoBase:766) - IO error while trying to download resource 'repo1:org/scalariform/sbt-scalariform_2.10_0.13/1.6.0/sbt-scalariform-1.6.0.pom': org.artifactory.api.repo.exception.maven.BadPomException: The target deployment path 'org/scalariform/sbt-scalariform_2.10_0.13/1.6.0/sbt-scalariform-1.6.0.pom' does not match the POM's expected path prefix 'org/scalariform/sbt-scalariform/1.6.0'. Please verify your POM content for correctness and make sure the source path is a valid Maven repository root path.
在某些地方,人们提到在Artifactory中使用以下选项“抑制POM一致性检查”,但在Artifactory的当前版本中,我找不到这样的选项

编辑 我只能看到这些选项

如评论中所述,常见的解决方法是“抑制POM一致性检查”

如果这是不可取的,另一种方法可能是使用有效的POM重新发布插件。我写这封信是为了证明这是可以做到的

//设置一些唯一的后缀
此构建/版本:=“0.15.0-Pets1”
lazy val root=(文件中的项目(“.”)
.启用插件(SbtPlugin)
.设置(
名称:=“sbt组件”,
....
publishMavenStyle:=真,
//加上这个
POMConsisty2021图纸设置,
)
//添加以下内容
lazy val pomConsistency2021Draft=设置键[布尔](“实验”)
/**
*这是一个非官方的实验,旨在重新发布具有更好Maven兼容性的插件
*/
def POMConsisty2021绘图设置:Seq[设置[]]=Seq(
POMConsistenc2021Draft:=设置(“真”、“1”)(sys.env.get(“POM_一致性”).getOrElse(“假”),
模块名称:={
if(POMConsisty2021draft.value)
SBTPluginModuleName 2021草稿(moduleName.value,
(pluginCrossBuild/sbtBinaryVersion).value)
else moduleName.value
},
投影d:={
if(POMConsistenc2021Draft.value)sbtPluginExtra2021Draft(projectID.value)
else投射值
},
)
def SBTPluginModuleName2021草稿(n:String,sbtV:String):String=
s“${n}{sbt${if(sbtV==“1.0”)“1”else if(sbtV==“2.0”)“2”else sbtV}”
def SBTPluginExtra2021草稿(m:ModuleID):ModuleID=
m、 withExtraAttributes(Map.empty)
.withCrossVersion(CrossVersion.binary)

似乎更像是一个人工问题:提到的一个解决方法是“抑制POM一致性检查”,我在哪里可以找到这个选项?在当前artifactory中,远程存储库的高级选项卡中似乎没有此选项。请看编辑。我只能看到上面屏幕截图中的选项。用户指南说:“在管理模块中,转到存储库| Remote并单击它以显示编辑存储库屏幕。”感谢您的提示。答案(不像许多链接所建议的那样)是在基本设置中查找文件。不,没问题。还有一件事;我不确定这是否是您要求的,但您可以在$userhome/.sbt/repositories文件中指定代理。然后,所有sbt项目都应在全球范围内采用该技术