多个项目的基本gradle Q.

时间:2014-09-23 20:36:01

标签: java gradle multiple-projects

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

例如目录结构如下:

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

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

看起来build.gradle文件应该放在root用户,但是如何区分两个完全独立且彼此无关的项目?当我使用gradle build命令时,如何指定要构建的一个项目?感谢。

2 个答案:

答案 0 :(得分:0)

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

    <root>/build.gradle

    <root>/<subproject1>/build.gradle
    <root>/<subproject1>/src/main/java/<basepackage>/<subproject1>/

    <root>/<subproject2>/build.gradle
    <root>/<subproject2>/src/main/java/<basepackage>/<subproject2>/

子项目1 子项目2 彼此独立。此外:

  • <root>/build.gradle可以包含所有子项目共有的构建配置,任务等。然后,子项目1特定的内容在<root>/<subproject1>/build.gradle
  • 如果您在gradle build中执行<root>/,则会构建所有子项目。如果您在&lt; root&gt; /&lt; subproject1&gt; /中执行此操作,则只会构建子项目1

有关详情,请参阅http://www.gradle.org/docs/current/userguide/multi_project_builds.html

答案 1 :(得分:0)

如果我不在基础,请告诉我,但基本上我认为你想要做的只是从两组源中生成两个独立的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'
}