【问题标题】:Better way for inter-project development (with Gradle or IntelliJ)项目间开发的更好方法(使用 Gradle 或 IntelliJ)
【发布时间】:2017-01-24 11:21:57
【问题描述】:

我有两个项目(不是模块),AB。项目B 依赖于A。我只能运行B。依赖是通过maven repo设置的,本地repo是第一个查看的。

当我需要更改依赖A 中的某些内容时,我一直在重复一个流程:

  • 在 IDE 中转到 A
  • 构建A
  • 安装到本地 Maven 仓库:gradlew install
  • 在 IDE 中转到 B
  • 刷新 gradle 项目
  • 运行B

有没有更好的方法可以跳过所有这些步骤?我正在考虑在我的 IDE (intelliJ) 中创建一个包含这两个的“主”虚拟项目,这样我就可以立即运行和更改所有内容。

【问题讨论】:

  • 在 eclispe 中,您可以在同一个工作区中拥有多个项目,我认为在 intelliJ 中也是如此。在这种情况下(maven / gradle)插件可以使用当前构建(在 EDI 中)来做依赖。不需要“主”虚拟项目。
  • IntelliJ 中没有工作区的概念。您可以拥有一个项目和一个或多个模块。但不是多个项目(afaik)。但我会检查的。
  • @Mr_Thorynque 但我无法使用另一个项目的类路径运行一个项目。因此,我只能将项目制作为模块,这让我想到了“大师”项目的想法
  • 如果您使用 gradle 或 maven,您不必操作 projets 类路径。让 IDE 插件处理依赖关系,它就会工作。

标签: java maven intellij-idea gradle


【解决方案1】:

解决此问题的一种方法是创建一个主项目,将您的两个项目都包含在此项目的 settings.gradle 中:

include "A", "B"

并将项目 B 的 build.gradle 更改为使用 Conditional substitution

configurations.all {
    resolutionStrategy.dependencySubstitution.all { DependencySubstitution dependency ->
        if (dependency.requested instanceof ModuleComponentSelector && dependency.requested.group == "org.example") {
            def targetProject = findProject(":${dependency.requested.module}")
            if (targetProject != null) {
                dependency.useTarget targetProject
            }
        }
    }
}

这样,如果你在根项目中执行./gradlew B:build,gradle也会构建项目A。

在 IDEA 中导入这个根项目也可以。

【讨论】:

  • 如果A 是多模块项目怎么办?我无法使用在根目录中执行的./gradlew A:build 构建它。但是我构建了B(B 取决于 A)- 但不是 A
【解决方案2】:

Gradle 3.1 引入了composite builds。例如,您可以使用它创建新项目,该项目是其他项目的组合。这个新项目只包含两个文件:

settings.gradle

rootProject.name='we'    
includeBuild '../api.java'
includeBuild '../common'
includeBuild '../engine'
includeBuild '../io'
includeBuild '../io-redis'

build.gradle

task buildServer {
    dependsOn gradle.includedBuild('engine').task(':server:build')
}

即将发布,IDEA 2016.3 将支持此功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 2016-08-05
    • 2018-05-19
    • 2013-10-07
    • 2018-09-05
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多