sbt PublishLocal到ivy2,供Gradle / Intellij

时间:2015-06-22 23:46:11

标签: gradle sbt ivy

我发布了一个带有sbt的jar。 jar是在一个基于build.sbt配置的合理路径的本地文件中生成的,如下所示:

name := "Utilities One"                                                         

organization := "com.cosi"                                                      

scalaVersion := 2.11.6"                                                        

version := "0.2"                                                                

这会在:/home/bill/.ivy2/local/com.cosi/utilities-one_2.11/0.2/jars/utilities-one_2.11.jar

创建一个jar

我的build.gradle指向常春藤仓库,并按如下方式命名依赖项:

dependencies {
    compile 'com.cosi:utilities-one_2.11:0.2@jar'
}

这会导致gradle进程在路径/home/bill/.ivy2/local/com.cosi/utilities-one_2.11/0.2/utilities-one_2.11-0.2.jar

中搜索jar

我通过手动创建符号链接来解决路径构造中的不兼容问题,并且项目成功构建(适用于Android)。

但我想通过调整build.sbt或gradle.sbt或两者来消除对符号链接的需要。是否可能,最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

您可以改为使用sbt publishM2并将mavenLocal()添加到gradle存储库:

repositories {
  mavenLocal()
}

publishM2使用Maven存储库布局并发布到~/.m2/repository使用的同一目录mavenLocal()

答案 1 :(得分:0)

嗯,更简单的解决方案令人尴尬地显而易见,但仍然不满意:

compile files('/home/bill/.ivy2/local/com.cosi/utilities-one_2.11/0.2/jars/utilities-one_2.11.jar')

也就是说,只需将Gradle引用类型更改为file而不是ivy,因为它是本地文件。也许sbt和gradle和常春藤不是为了一起玩。