【问题标题】:Basic gradle Q for multiple projects多个项目的基本 gradle Q
【发布时间】:2014-09-23 20:36:00
【问题描述】:

这是一个基本的 gradle 问题,但我找不到答案: 如果我有多个独立的项目共享同一个根目录,我应该如何为它们使用不同的 build.gradle 文件?

例如目录结构是这样的:

src/main/java/package1/base1/project1package/

src/main/java/package1/base1/project2package/

看起来build.gradle文件应该放在根目录下,但是如何区分两个完全独立且互不相关的项目呢?使用 gradle build 命令时,如何指定要构建的项目?谢谢。

【问题讨论】:

  • 这些似乎不是不同的项目,而是单独的包。不同的项目通常会有不同的路径和文件树。
  • 你是对的。我要做的是看看不同的项目如何共存并共享相同的根结构,并分别使用 gradle 构建。
  • 看来您应该将公共代码库分离到第三个项目,然后将上述项目的依赖项设置为第三个。

标签: java gradle multiple-projects


【解决方案1】:

说实话,我不喜欢你提出的结构。标准的看起来像这样:

/build.gradle //build.gradle //src/main/java/// //build.gradle //src/main/java///

subproject1subproject2 是相互独立的。此外:

  • <root>/build.gradle 可以包含所有子项目通用的构建配置、任务等。然后子项目1特定的东西在<root>/<subproject1>/build.gradle
  • 如果你在<root>/中执行gradle build,所有的子项目都会被构建。如果您在 // 中执行此操作,则只会构建 subproject1

欲了解更多信息,请参阅http://www.gradle.org/docs/current/userguide/multi_project_builds.html

【讨论】:

  • 感谢您的帮助。我解释了为什么我以这种方式组织结构。采用您提到的方式是一种很好的做法,并且最好知道一个灵活的解决方案(-b 指定文件名)。再次感谢。
【解决方案2】:

如果我不在基地,请告诉我,但基本上我认为您想要做的只是从恰好位于同一根目录中的两组源中生成两个单独的 JAR。正如@Tomas 所说,这是一种非常有趣的项目结构方式,但假设您无法更改项目结构,您可以简单地创建自定义source sets 来解决这个问题。

您的构建可能看起来像这样。

apply plugin: 'java-base'

sourceSets {
    projA {
        java {
            srcDir 'src/main/java'
            include 'pkg1/**'
        }
    }
    projB {
        java {
            srcDir 'src/main/java'
            include 'pkg2/**'
        }
    }
}

task projAJar(type: Jar) {
    baseName 'projA'
    from sourceSets.projA.output
}

task projBJar(type: Jar) {
    baseName 'projB'
    from sourceSets.projB.output
}

虽然这在技术上是一个 Gradle 项目,但这两个源集各有自己的编译任务、jar 任务和配置。你可以像这样配置你的依赖。

dependencies {
    projACompile 'foo.org:lib:1.0'
    projBCompile 'bar.org:lib:2.0'
}

【讨论】:

  • 这是一个非常正式的答案。非常感谢。我的情况有点奇怪。基本上我想在相同的目录结构下以非常接近的方式创建一些示例项目作为我的代码 sn-ps,以便我可以轻松浏览它们。我使用 -b 选项为不同的项目选择不同的构建配置文件。所以这些构建配置文件可以放在同一个目录下,但可以独立使用。我同意这不是组织产品代码结构的方式,而只是将代码sn-ps组合在一起的一种方便方式。
猜你喜欢
  • 1970-01-01
  • 2018-11-10
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多