[英]sbt add java project
使用IDEA IntelliJ中的一些scala软件。 (如果必要,它还具有Android功能)。 假设我有两个项目:
用Scala编写的P1使用sbt作为构建工具
用Java编写的P2使用gradle作为构建工具
我想从P2调用一些代码,具有完整的源代码。 因此,我将P2导入为IntelliJ scala项目中的模块。 但是,当我使用sbt-shell编译sbt项目时,它告诉我一个错误,即找不到在P2中声明的类和包的任何定义。 我想我需要在build.sbt文件中创建适当的引用,以便它可以理解定义的来源。 我发现了一个建议将非托管Java源路径添加到build.sbt的解决方案,如下所示:
unmanagedSourceDirectories in Compile += file("mydependency")
但问题是依赖项本身具有依赖项。 当我尝试编译该代码时,sbt告诉我它找不到该依赖项的定义。 因此,我需要一种在build.sbt中引用完整Java项目的方法,以便随后可以通过sbt shell编译整个东西(实际上,我不得不使用sbt shell)。
有什么建议么?
根据我的理解,更好(但不同)的解决方案将是在您的本地存储库(例如publishLocal)中发布jar并依赖它。
当我尝试编译该代码时,sbt告诉我它找不到该依赖项的定义。
我看到了两种可能的解决方案:将这些依赖项添加到build.sbt项目中,或者按照建议的方式分别构建gradle项目,将其发布到本地存储库(或本地文件夹)中,并从sbt项目中引用它。
可能性三-为两个项目都定义一个多模块SBT项目,并在sbt中也管理Java项目。 但是,这是一个单调乏味的解决方案,因为您必须维护两个不同的构建文件,因此,仅当您打算将整头猪切换到SBT时,这才有用。
否则,“ publishLocal”解决方案可能会带来最少的痛苦。
install
其install
到本地Maven存储库中 build.sbt
向P2 / Java添加库依赖关系,例如libraryDependencies += "xyz" % "xyz" % "xyz"
。 现在,在P1中也可以访问P2的所有依赖项 build.sbt
任何刷新都会删除此显式添加到P2的IntellIJ-project-struture-module-dependency。 因此,我建议在sbt auto-import
中关闭sbt auto-import
,并在您重新启动IntelliJ时保持依赖关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.