IntelliJ - 具有多个互连(!)模块的Gradle项目

问题描述 投票:1回答:1

我正在使用IntelliJ IDEA。我习惯于使用以下方式处理Maven多模块项目:

  1. 创建一个项目。
  2. 创建模块,比如M1,M2,M0和M00。
  3. 设置所有POM等→完成。

假设模块M00是我的项目的公共API,它也由模块M0内部使用,模块M1本身是我的项目的一个共同私有部分,其他模块依赖于它。

也就是说,M2M0都依赖于M0,而M00也依赖于M1,也就是说,在模块M2M0我可以使用模块M00M00的所有代码。

使用Maven,这就像创建模块,编写代码,然后简单地编译它们(配置适当的POM)一样简单。但是,使用Gradle,我无法从另一个模块中访问一个模块的代码(类/方法/ ...)。

我找到的唯一解决方案是将所有M0模块与所有内容分开构建并安装在我的本地Maven存储库中,然后对模块M1执行相同操作,然后像其他/主模块中的任何其他外部依赖项一样使用这两个模块(M2)和M0)。

这意味着每次我对模块M00torifly ├── 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-serverM1可能分别指代样本M2torifly-sdk,模块M00可能是torifly-protocolM0可能是模块torifly-updater。模块dependencies { compile project(':M00') } 是一个单独的独立模块,没有连接到该项目中的任何其他模块。

java maven gradle intellij-idea multi-module
1个回答
1
投票

如果我正确理解您的问题,您只需要设置模块之间的依赖关系。这与Maven中的工作基本相同。

模块M0 - build.gradle

Gradle docs

必须为每个模块间依赖关系完成此操作。有关更多信息,请参阅qazxswpoi。

© www.soinside.com 2019 - 2024. All rights reserved.