配置 SBT 以仅解析 Ivy 存储库中的 jar(而不是 war)

Configure SBT to resolve only jar (and not war) from Ivy repository

我正在使用 SBT 和 Ivy/Artifactory 构建两个项目。

其中一个项目以 JAR 和 WAR 格式上传到 Artifactory。 另一个项目使用 SBT 从另一个项目构建的 JAR 作为依赖项。

我的问题是:当我添加我的 Artifactory 存储库并构建第二个项目时,它成功找到了工件,但同时下载了 JAR 和 WAR,而只需要 JAR 文件。

我查找了有关该问题的文档,但找不到任何特定于该扩展的信息。我在 SBT 文档页面中阅读了有关分类器的信息,但这似乎不是我要找的内容。

有什么想法吗?

谢谢。

关键是要设置 2 个不同的 ivy 配置,一个用于 jar,一个用于 war。

然后在你的dependent项目中你可以做:

“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,一个用于 war)的 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>

干杯