java - Gradle 使用单个 build.gradle 在多个项目上构建

标签 java android gradle

我有这样一种情况,我在一个公共(public)目录(如项目)下有单独的项目 PROJECT_A 和 PROJECT_B。我的项目文件夹看起来像

Project

 - PROJECT_A 
 - PROJECT_B

现在我可以用一个 build.gradle 文件来构建这两个项目吗?

注意:我不想为 PROJECT_A 和 PROJECT_B 使用单独的 build.gradle 文件,但是 gradle 文件可以为构建每个项目执行不同的任务

最佳答案

这是一个示例,说明如何使用单个 build.gradle 拥有多个子项目。

项目结构有两个子项目,foobar,每个子项目只有一个java类Foo.javaBar .java。否则该目录只包含默认的 gradle 目录和脚本:

├── bar
│   └── src
│       └── main
│           └── java
│               └── org
│                   └── example
│                       └── Bar.java
├── build.gradle
├── foo
│   └── src
│       └── main
│           └── java
│               └── org
│                   └── example
│                       └── Foo.java
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle

单个 build.gradle 文件如下所示。评论应该清楚地说明发生了什么:


group 'org.example'
version '1.0-SNAPSHOT'

// These settings apply to all subprojects but not the root project.
subprojects {
    apply plugin: 'java'
    repositories {
        mavenCentral()
    }
}

// Get a variable for each project.
Project foo = project(':foo')
Project bar = project(':bar')

// Configure the foo project as you would in foo/build.gradle.
// Just using a misc. dependency for example purpose.
configure(foo, {
    dependencies {
        implementation 'software.amazon.awssdk:s3:2.13.71'
    }
})

// Configure the bar project as you would in bar/build.gradle.
// Just making bar depend on foo for example purpose.
configure(bar, {
    dependencies {
        compile foo
    }
})

Foo.javaBar.java 包含:

package org.example;

public class Foo {
    public Foo() {
        System.out.println("Hi, I'm Foo");
    }
}
package org.example;

public class Bar {
    public Bar() {
        System.out.println("Hi, I'm Bar");
        new Foo();
    }
}

然后你就可以编译完整的项目了:

$ ./gradlew compileJava

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.3/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 466ms
3 actionable tasks: 3 executed

关于java - Gradle 使用单个 build.gradle 在多个项目上构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26013273/

相关文章:

java - 使用 Servlet 重定向 REST 请求

java - 多个 NIO react 器,还是只有一个?

java - 如何将监听器添加到分隔符位置?

android - 具有自定义主题的 EditText 在选择句柄下显示下划线

java - 将数据传递给 onActivityResult 的问题

gradle - 在 Gradle 中为复制任务指定输出文件

gradle - 影子 jar 不将依赖项包含到 fat jar 中

android - 哪个依赖性导致 “Failed resolution Failed resolution of: Lcom/google/android/gms/common/internal/zzab;”

java - 在 Kotlin 中测试非空参数

java - 只要有非零余数,我的 Bigdecimal 除法就会导致应用程序崩溃?