Java IntelliJ gradle添加模块依赖项
使用IntelliJ 2016.2.Java IntelliJ gradle添加模块依赖项,java,intellij-idea,gradle,Java,Intellij Idea,Gradle,使用IntelliJ 2016.2. 使用Gradle 2.14.1 我有两个项目,每个项目都有自己的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
使用Gradle 2.14.1 我有两个项目,每个项目都有自己的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中,我在同一级别(无子项目)具有以下模块结构:
简单的请求。。。我想在sandbox
应用程序中使用myLib
。我想在同一个项目中的两个模块,以发展两者
我已经尝试为IntelliJ中的myLib
向sandbox
添加模块依赖项。没有骰子。我试过添加一个jar引用,没有骰子
我认为我需要在build.gradle文件中添加一个依赖项,但无法确定如何添加。我尝试了编译文件“”,等等。没有骰子。本地模块
这是大多数Gradle项目遵循的模式,其中有一个库,然后是使用该库的示例应用程序-
在顶级的settings.gradle
中
include ':library', ':app'
在app/build.gradle
中,编译包含的项目
dependencies {
compile project(':library')
}
基本上,顶级的build.gradle
,是子项目和变量的所有常见配置的包装器。例如,它最常用于Maven URL的repositories{}
部分。有关详情,请参阅
远程模块
上面的内容对于在本地工作来说很好,但是假设您希望与其他许多开发人员共享您的repo,而不需要让他们下载额外的源代码。然后将其他库发布到远程服务器
这是您在将这些行添加到项目中时已经在做的事情
implementation("org:artifact:version")
如果您的项目在GitHub上公开,请使用类似的服务。您还可以在Bintray OSS或Maven Central上设置一个帐户,使您的库与大多数其他库一样可用
如果您的项目是公司内部的私有项目,您将需要一些Maven类型的服务器,无论是通用web服务器,还是Nexus或Artifactory,您都可以
然后添加
编译
或实现
源代码,正常情况下最终Gradle 3.1解决了这个问题。现在本机支持复合构建。更多
简而言之,将此行添加到sandbox settings.gradle文件中-
includeBuild '<PATH>/myLib'
includebild'/myLib'
如果您无法升级Gradle,那么您唯一的希望就是将mylib工件发布到本地maven repo,并将mavenLocal()添加到sandbox/build.Gradle。这个答案在现代Gradle和intellij中已经过时,请参阅 原始答案 文章对其进行了讨论 基本上,您需要使用复合构建。因此,查看>工具窗口>渐变>右键单击使用库的项目>复合构建配置>勾选要使用本地版本的库项目
执行重建,然后应使用本地依赖关系最简单的方法就是将lib文件夹保留在项目的父目录中,并在module build.gradle文件中包含以下行
implementation fileTree(dir: '../libs', include: ['*.jar'])
implementation fileTree(dir: '../libs', include: ['*.aar'])
在这两个模块之外,您有顶级的
bulid.gradle
和settings.gradle
吗?没有。我意识到我可以在“沙盒”中创建“lib”目录,并在每次重建和jared“myLib”时复制“myLib”jar文件,但我正在寻找更好的解决方案。我以为IntelliJ和/或Gradle会帮我把这些放在一起。这很奇怪,我注意到当我告诉idea在给定模块上添加依赖项时,它只在.idea文件中这样做,而不是在其他地方。类似地,如果我在IntelliJ IDE项目设置中添加依赖项,那么它会在IDE编辑器中解决错误;但是,我无法生成,因为IntelliJ没有对build.gradle和settings.gradle文件进行任何更改。因此,我按照下面的解决方案手动添加了依赖项。在外部设置文件中,我添加了“include”:myLib',在构建文件中,我添加了“compileproject(':myLib')”。显然,冒号是gradle用来表示子项目层次结构的分隔符。这听起来很合理,也正是我想要做的,但是,我在用IntelliJ解决问题时遇到了一些困难。谢谢,我会将此标记为解决方案。只是好奇,你通常使用什么IDE?我使用Intellij IDEA。我只创建过一个Gradle Java项目,尽管在org.Gradle.api.project类型的根项目“我的项目名称”上找不到参数[../My Library Name]的方法include()。
@Ben确保它是设置文件,而不是构建文件,然后它采用模块名称,不是一个文件位置,答案完全没有帮助,除了链接到。这个链接有帮助。谢谢。您的链接似乎缺少includebild
说明。非常感谢!唯一快速且非常简单的解决方案,不会破坏更改。从Idea 2019.1社区版开始,没有复合构建配置
there@EugeneGr.Philippov是的,在更新的版本中,达尔文白沙的答案是正确的
repositories {
maven { url "http://some.maven.site/" }
}
includeBuild '<PATH>/myLib'
implementation fileTree(dir: '../libs', include: ['*.jar'])
implementation fileTree(dir: '../libs', include: ['*.aar'])