Scala Coursier自定义Ivy存储库

v8wbuo2f  于 2023-03-18  发布在  Scala
关注(0)|答案(1)|浏览(179)

我想给予一下coursier工件提取器,但是我们在maven和ivy仓库中使用了Artifactory,我不知道如何在coursier中设置它。在文档中,他们提供了ENV.variable的示例:

export COURSIER_REPOSITORIES="ivy2Local|central|sonatype:releases|jitpack|https://corporate.com/repo"

如果我有artifactory常春藤回购与此URL:http://myivyrepo.tld/joint-ivy-releases,它们也有一些自定义模式:

[org]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]

我该如何与Coursier建立联系?

pes8fvy9

pes8fvy91#

我为这个问题付出了太多的努力,我知道这个问题已经存在两年了,但我认为我们可以从这个问题的答案中受益。
根据Coursier cs fetch --help

--repository | -r  <maven|sonatype:$repo|ivy2local|bintray:$org/$repo|bintray-ivy:$org/$repo|typesafe:ivy-$repo|typesafe:$repo|sbt-plugin:$repo|scala-integration|scala-nightlies|ivy:$pattern|jitpack|clojars|jcenter|apache:$repo>
        Repository - for multiple repositories, separate with comma and/or add this option multiple times (e.g. -r central,ivy2local -r sonatype:snapshots, or equivalently -r central,ivy2local,sonatype:snapshots)

(也许当这个问题被问到的时候情况并不是这样的)可以用ivy作为ivy存储库的前缀。从这个帮助中真正不清楚的是如何同时提供自定义服务器和模式,但实际上这真的很简单,你必须在参数中将两者连接起来:

cs fetch --no-default --repository http://myivyrepo.tld/joint-ivy-releases/[org]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]

Coursier的内部解析器将负责检测哪个部分是url,哪个部分是模式。
如果有人对此感兴趣,所有负责的代码都位于coursier的IvyRepository.parse函数中。
此外,可以将metadataPattern指定给coursier(我不知道那是什么)以表示ivy,方法是在后面用|分隔它们,就像这样

cs fetch --no-default --repository http://myivyrepo.tld/joint-ivy-releases/[org]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]|<YOUR_METADATA_OPTS>

相关问题