IntelliJ - 具有多个互连(!)模块的Gradle项目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IntelliJ - 具有多个互连(!)模块的Gradle项目相关的知识,希望对你有一定的参考价值。
我正在使用IntelliJ IDEA。我习惯于使用以下方式处理Maven多模块项目:
- 创建一个项目。
- 创建模块,比如M1,M2,M0和M00。
- 设置所有POM等→完成。
假设模块M00
是我的项目的公共API,它也由模块M0
内部使用,模块M1
本身是我的项目的一个共同私有部分,其他模块依赖于它。
也就是说,M2
和M0
都依赖于M0
,而M00
也依赖于M1
,也就是说,在模块M2
和M0
我可以使用模块M00
和M00
的所有代码。
使用Maven,这就像创建模块,编写代码,然后简单地编译它们(配置适当的POM)一样简单。但是,使用Gradle,我无法从另一个模块中访问一个模块的代码(类/方法/ ...)。
我找到的唯一解决方案是将所有M0
模块与所有内容分开构建并安装在我的本地Maven存储库中,然后对模块M1
执行相同操作,然后像其他/主模块中的任何其他外部依赖项一样使用这两个模块(M2
)和M0
)。
这意味着每次我对模块M00
或torifly
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
├── torifly-client
│ ├── build.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
├── torifly-protocol
│ ├── build.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
├── torifly-sdk
│ ├── build.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
├── torifly-server
│ ├── build.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── torifly-updater
├── build.gradle
└── src
├── main
│ ├── java
│ └── resources
└── test
├── java
└── resources
进行任何更改时,我都要浪费很多时间来做这些单调乏味的工作(当使用Maven时,IntelliJ会检测同一项目的模块中的代码并自动使用它,而不会让我总是这么做每次进行更改时都构建并安装“依赖项”。
有没有办法让这个更简单(“Maven-like”)?因为我没有看到任何理由将Gradle用于这样的项目,否则因为它只会硬化并减慢开发速度。
P.S。:我对Gradle很新
我的项目结构:
rootProject.name = 'torifly'
include "torifly-client"
include "torifly-protocol"
include "torifly-server"
include "torifly-sdk"
include 'torifly-updater'
根'settings.gradle'文件的内容
build.gradle
根
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'
文件的内容
group
其他(modules')'build.gradle'文件的内容
这些文件都是相同的,只是名称不同(
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'
)
torifly-client
如果链接到问题本身的“示例名称”,模块torifly-server
和M1
可能分别指代样本M2
和torifly-sdk
,模块M00
可能是torifly-protocol
而M0
可能是模块torifly-updater
。模块dependencies
compile project(':M00')
是一个单独的独立模块,没有连接到该项目中的任何其他模块。
如果我正确理解您的问题,您只需要设置模块之间的依赖关系。这与Maven中的工作基本相同。
模块M0 - build.gradle
Gradle docs
必须为每个模块间依赖关系完成此操作。有关更多信息,请参阅qazxswpoi。
以上是关于IntelliJ - 具有多个互连(!)模块的Gradle项目的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SBT 和 IntelliJ IDEA 管理多个相互依赖的模块?
IntelliJ idea 多个maven模块同时运行,怎么操作