![](/img/trans.png)
[英]Gradle, Kotlin : How to add another spring boot project as a module dependency in intellij
[英]IntelliJ gradle add module dependency
使用 IntelliJ 2016.2。
使用 Gradle 2.14.1
我有 2 个项目,每个项目都有自己的 build.gradle 文件和单独的目录结构:
myLib (meant to be jarred and used by others)
- build.gradle
- settings.gradle
- src/main/java/...
sandbox (spring boot web app)
- build.gradle
- settings.gradle
- src/main/java/...
- src/main/resources/...
希望你能得到图片。 在 IntelliJ 中,我在同一级别(无子项目)具有以下模块结构:
- myLib
- sandbox
简单的请求......我想在sandbox
应用程序中使用myLib
。 我希望在同一个项目中同时开发这两个模块。
我尝试在 IntelliJ 中为myLib
的sandbox
添加模块依赖项。 没有骰子。 我试过添加一个罐子参考,没有骰子。
我相信我需要在 build.gradle 文件中添加一个依赖项,但无法弄清楚如何。 我试过compile files '<path to myLib.jar>'
等。没有骰子。
这是大多数 Gradle 项目所遵循的模式,其中有一个库,然后是一个使用该库的示例应用程序 - 参考 Gradle 文档
- app/
- build.gradle
- src/main/java # where your main class would be
- library/
- build.gradle
- src/main/java # dependencies of the app module
- settings.gradle
- build.gradle
在那个顶级settings.gradle
你有
include ':library', ':app'
在app/build.gradle
中,编译包含的项目
dependencies {
compile project(':library')
}
基本上,顶级build.gradle
是子项目和变量的所有常见配置的包装器。 例如,它最常用于 Maven url 的repositories { }
部分。 Gradle - 多项目构建
以上对于本地工作来说很好,但是假设您想与许多其他开发人员共享您的存储库,而不让他们下载额外的源代码。 然后您会将其他库发布到远程服务器。
当您将这些行添加到项目中时,这就是您已经在做的事情
implementation("org:artifact:version")
如果您的项目在 GitHub 上是公开的,请使用类似jitpack.io的服务。 您还可以在 Bintray OSS 或 Maven Central 上设置一个帐户,以使您的库像大多数其他库一样可用。
如果您的项目在您的公司内是私有的,您将需要一些 Maven 类型的服务器,无论是通用 Web 服务器,还是 Nexus 或 Artifactory,您都可以将其添加到存储库块中。
repositories {
maven { url "http://some.maven.site/" }
}
然后像往常一样添加compile
或implementation
源
Gradle 3.1 终于解决了这个问题。 现在原生支持复合构建。 更多在这里。 简而言之,将此行添加到沙箱 settings.gradle 文件中-
includeBuild '<PATH>/myLib'
如果您无法升级 Gradle,那么您唯一的希望就是将 mylib 工件发布到本地 maven repo 并将 mavenLocal() 添加到 sandbox/build.gradle。
最简单的方法是将 lib 文件夹保留在项目的父目录中,并在模块 build.gradle 文件中包含以下行
implementation fileTree(dir: '../libs', include: ['*.jar'])
implementation fileTree(dir: '../libs', include: ['*.aar'])
我知道这很旧,但我最近遇到了同样的问题,这是我的解决方案:
假设这个文件树:
.
|- app
| |- src
| | |- ...
| |- build.gradle
|
|- lib
| |- src
| | |- ...
| |- build.gradle
|
|- settings.gradle
您可以这样设置您的 gradle 项目:
./settings.gradle
rootProject.name = 'some-project'
include 'app'
include 'lib'
./app/build.gradle
// ...
dependencies {
// depend on sibling module lib
implementation project(':lib')
}
// ...
最后,确保您要从lib
模块导入的内容不在基础包中。
这个答案在现代 gradle 和 intellij 中已经过时了,请参考darwinbaisa 的答案
原始答案
基本上你需要使用复合构建。 所以查看 > 工具窗口 > Gradle > 右键单击使用库的项目 > 复合构建配置 > 勾选您要使用本地版本的库项目。
进行重建,然后应该使用本地依赖
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.