配置 SBT 以仅解析 Ivy 存储库中的 jar(而不是 war)
Posted
技术标签:
【中文标题】配置 SBT 以仅解析 Ivy 存储库中的 jar(而不是 war)【英文标题】:Configure SBT to resolve only jar (and not war) from Ivy repository 【发布时间】:2016-06-20 07:49:55 【问题描述】:我正在使用 SBT 和 Ivy/Artifactory 构建两个项目。
其中一个项目以 JAR 和 WAR 格式上传到 Artifactory。 另一个项目使用SBT从另一个项目构建的JAR作为依赖。
我的问题是:当我添加我的 Artifactory 存储库并构建第二个项目时,它成功找到了工件,但同时下载了 JAR 和 WAR,而只需要 JAR 文件。
我查找了有关该问题的文档,但找不到特定于扩展的任何内容。我在 SBT 文档页面中阅读了有关分类器的信息,但这似乎不是我想要的。
有什么想法吗?
谢谢。
【问题讨论】:
【参考方案1】:问题是设置 2 种不同的 ivy 配置,一种用于 jar,一种用于战争。
然后在你的依赖项目中你可以这样做:
“my.kikou.org” %% “dependeeProj” % “1.0” % “war”
或者
“my.kikou.org” %% “dependeeProj” % “1.0” % “jar”
因此,在您的 dependee 项目 dependeeProj
SBT 文件中,您可以按照以下步骤设置 ivy 配置:http://www.scala-sbt.org/0.13/docs/Artifacts.html#Modifying+default+artifacts
目标是生成一个包含 2 个配置(一个用于 jar,一个用于战争)的 ivy.xml,并使工件(.jar 和 .war)成为正确配置的一部分。生成的(由 SBT)ivy.xml 应如下所示:
<ivy-module version="1.0">
...
<configurations>
<conf name="jar" description="Lib as a Jar"/>
<conf name="war" description="Lib as a War"/>
</configurations>
<publications>
<artifact name="dependeeProj-jar" type="jar" conf="jar" ext="jar"/>
<artifact name="dependeeProj-war" type="war" conf="war" ext="war"/>
</publications>
...
</ivy-module>
干杯
【讨论】:
嗨琼。谢谢回复。我不确定我是否理解您何时谈论依赖关系以及何时谈论依赖项目。我在哪里需要两个常春藤配置?目前在我本地的 Ivy 仓库中,依赖项有两个目录,一个是带有 jar 的jars
,另一个是带有战争的 wars
。如果我在依赖项目的 build.sbt 中尝试使用 % "jar"
,我会收到一条错误消息,指出配置不存在。
我编辑了答案。您在依赖项目中所做的就是您需要做的所有事情。现在您需要在依赖项目中做一些更复杂的工作来生成具有 2 个配置的 ivy.xml,并使每个工件成为正确配置的一部分。不幸的是,这是我从未亲自做过的事情,但希望上面的链接能让你走上正确的道路。当您正确时,请随时编辑我的答案。以上是关于配置 SBT 以仅解析 Ivy 存储库中的 jar(而不是 war)的主要内容,如果未能解决你的问题,请参考以下文章
我们可以使用单独的解析器在 ivy ANT 中下载依赖项 jar 吗?