【问题标题】:Gradle & Intellij Optionally include other modulesGradle 和 Intellij 可选地包括其他模块
【发布时间】:2015-03-03 23:52:14
【问题描述】:

我们的环境中有几个 git repos,一些是 web 前端,一些是服务层,还有一些是后端。我们的一些模块是库,是其他模块的依赖项,有些不是依赖项,但包含 Web 服务等。

如果开发人员将模块包含在 IntelliJ 项目中,我需要能够将 Gradle 设置为可选地链接到模块的源代码。例如,UI 开发人员不需要所有 Java 库来完成他们的工作,但其他开发人员可能需要。

可以为 Gradle 添加 maven 插件并在依赖模块上进行安装,但这远非理想。这样做需要我们手动对每个模块进行安装,将编译后的 jar 放入 .m2 目录,以便依赖模块可以使用该 jar。每次安装/刷新后,您必须进入 IntelliJ 并重新添加每个库的源路径,因为它不是自动的。当我重建我的项目时,这种方法也不会自动进行安装。

我知道这是有可能的,因为我们在我过去工作过的一家公司就是这样做的。我没有过多地参与构建管理,所以我没有了解它是如何完成的。

【问题讨论】:

    标签: java intellij-idea gradle


    【解决方案1】:

    我在这里找到了解决问题的好方法:https://stackoverflow.com/a/23574904/3088642

    我正在尝试使代码在插件中工作,如果成功,我会在此处发布代码。

    这是我完整的顶级 build.gradle 文件:

    // Make sure we've parsed sub-project dependencies
    evaluationDependsOnChildren()
    // Map of all projects by name
    def subProjectsByName = subprojects.collectEntries { p -> [p.name, p] }
    
    // Replace artifact dependencies with subproject dependencies, if possible
    subprojects.each { p ->
        def changes = [] // defer so we don't get ConcurrentModificationExceptions
        p.configurations.each { c ->
            c.dependencies.each { d ->
                def sub = subProjectsByName[d.name]
                if (sub != null) {
                    changes.add({
                        c.dependencies.remove(d)
                        p.dependencies.add(c.name, sub)
                    })
                }
            }
        }
        for (change in changes) {
            change()
        }
    }
    
    task wrapper(type: Wrapper) {
        gradleVersion = '2.3'
    }
    

    还有我的 settings.gradle 文件:

    // find all sub-projects and include them
    rootDir.eachFileRecurse {
        if (it.name == "build.gradle") {
            def projDir = it.parentFile
            if (projDir != rootDir) {
                include projDir.name
                project(":${projDir.name}").projectDir = projDir
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      相关资源
      最近更新 更多