Java IntelliJ-Gradle项目,带有多个相互连接的(!)模块
我正在使用IntelliJ IDEA。我习惯于以如下方式在it中处理Maven多模块项目:Java IntelliJ-Gradle项目,带有多个相互连接的(!)模块,java,maven,gradle,intellij-idea,multi-module,Java,Maven,Gradle,Intellij Idea,Multi Module,我正在使用IntelliJ IDEA。我习惯于以如下方式在it中处理Maven多模块项目: 创建一个项目 创建模块,比如M1、M2、M0和M00 设置所有POM等→ 完成了 假设moduleM00是我的项目的一个公共API,moduleM0也在内部使用它,它本身是我的项目的一个公共私有部分,其他模块依赖它 也就是说,M1和M2都依赖于M0,而M0也依赖于M00,也就是说,在模块M1和M2中,我可以使用模块M0和M00中的所有代码 对于Maven,这一切都很简单,只需创建模块、编写代码,然后简单地
M00
是我的项目的一个公共API,moduleM0
也在内部使用它,它本身是我的项目的一个公共私有部分,其他模块依赖它
也就是说,M1
和M2
都依赖于M0
,而M0
也依赖于M00
,也就是说,在模块M1
和M2
中,我可以使用模块M0
和M00
中的所有代码
对于Maven,这一切都很简单,只需创建模块、编写代码,然后简单地编译它们(配置适当的POM)。然而,使用Gradle,我无法从一个模块内部访问另一个模块的代码(类/方法/…)
我找到的唯一解决方案是分别构建前面提到的M00
模块,并将其安装到本地Maven存储库中,然后对模块M0
执行相同的操作,然后像其他/主模块中的任何其他外部依赖项一样使用这两个模块(M1
和M2
)
这意味着每当我对模块M0
或M00
进行任何更改时,我都必须浪费大量的时间做那些单调乏味的工作(而对于Maven,IntelliJ从同一个项目的模块中检测代码并自动使用,而不需要我总是构建和安装“依赖项”每次我做出改变)
有没有办法让这更简单(“像Maven一样”)?因为我真的看不出有任何理由在这样的项目中使用Gradle,因为它只会使开发变得更加困难和缓慢。
附言:我是格拉德尔的新手
我的项目结构:
根“settings.gradle”文件的内容
根build.gradle
文件的内容
其他(模块)“build.gradle”文件的内容
这些文件都是相同的,只是名称不同(group
)
如果链接到问题本身中我的“示例名称”,模块
torifly客户端
和torifly服务器
可能分别引用示例M1
和M2
,模块torifly sdk
可能是M00
,而torifly协议
可能是模块M0
。模块torifly updater
是一个单独的独立模块,未连接到此项目中的任何其他模块。如果我正确理解您的问题,您只需要设置模块之间的依赖关系。这与Maven中的工作原理基本相同
模块M0-构建.渐变
dependencies {
compile project(':M00')
}
这必须针对每个模块间依赖性进行。有关更多信息,请参阅
rootProject.name = 'torifly'
include "torifly-client"
include "torifly-protocol"
include "torifly-server"
include "torifly-sdk"
include 'torifly-updater'
buildscript {
repositories {
mavenCentral()
mavenLocal()
jcenter()
}
}
subprojects {
repositories {
mavenCentral()
mavenLocal()
jcenter()
}
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
}
plugins {
id 'java'
id 'idea'
}
group 'net.torifly.protocol'
version '1.0.0'
dependencies {
compile group: 'me.darksidecode.easysockets', name: 'EasySockets', version: '1.0.0'
}
dependencies {
compile project(':M00')
}