java - Gradle:同一项目中的 Java 和 Android 子项目

标签 java android intellij-idea gradle

TL;DR:开发纯 Java 和 Android 应用程序的唯一方法是在完全不同的 Gradle 项目上吗?

我正在开发一个项目,其中包括一个 Android 应用程序和一个 Java 后端(以及一些其他常见的 API)。
作为 IDE,我正在使用 IntelliJ Idea。
我想要一个包含所有应用程序作为子项目的 Gradle 项目(将在单个 Idea 实例上打开)。

我的问题是,为了允许 Android 插件,我需要在 build.gradle 文件的 buildScript 部分进行设置:

dependencies {
    classpath 'com.android.tools.build:gradle:2.2.3'
}

这会在整个 Gradle 构建过程中强制使用 android 插件,并导致纯 Java 子项目出错(它们会自动设置为使用 Android SDK 而不是 Java SDK 构建)。

我想到的解决方法是创建两个单独的项目(一个用于 Android,一个用于 Java),将通用 JAR 导出到本地 Maven 存储库,然后从那里将其导入到 Android 项目中。

是否有更好的解决方案可以让我将所有代码库放在同一个地方?

最佳答案

你所要求的是可能的:你只需要将构建脚本声明从项目移动到android模块。

PROJECT build.gradle 可能如下所示:

buildscript {
    // nothing for the project
}

allprojects {
    repositories {
        jcenter() // you could also move this to each module
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Android MODULE build.gradle 可能如下所示:

apply plugin: 'com.android.application'
// other pluguins

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        // other dependencies for the build (apt, retrolambda...)
    }
}

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "my.android.app"
        // additional config...
    }
}

dependencies {
    // your app dependencies here
}

其他模块,例如后端或网络,可以使用自己的插件、存储库和依赖项声明自己的构建脚本。

关于java - Gradle:同一项目中的 Java 和 Android 子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41930439/

相关文章:

java - 如何知道 Java SE 类或方法是否线程安全?

java - 使用自定义 @Query 注释的 Spring-Data Elasticsearch 存储库计数不起作用 "Expected 1 but found 30 results"

java - Maven不使用本地JRE/JDK

java - 卡夫卡广播。如果组中唯一的消费者出现故障,如何知道消费者组的读取偏移量

java - Sonar、QAPlug、IntelliJ 集成 - 多个配置文件?

android - GridView 上的动画在滚动时变得困惑

android - 在 Android 中向用户显示提示的新样式

android - 为什么 Android Studio 会删除 build.gradle 中列出的依赖项?

java - 如何在 IntelliJ IDEA 中查看本地运行的 AppEngine 应用程序的调试日志?

java - 在 Intellij : ClassNotFoundException: org. apache.woden.WSDLException 中生成 WSDL 时出错