android - 使用HMS Toolkit添加HMS和GMS时找不到com.huawei.hms :hwid:5. 3.0.301和推送套件

标签 android gradle huawei-mobile-services

我正在尝试将 HMS 添加到我们的 GMS 第一个应用程序中。这是一个庞大的应用程序,因此我们决定尝试使用 HMS Toolkit 转换软件。该工具包添加了必要的依赖项和模块,并在需要时进行了适当的替换,但是当我尝试构建我们的应用程序时,我收到有关生成的模块依赖项的以下错误:

Execution failed for task ':xmsadapter:generateDebugRFile'.
> Could not resolve all files for configuration ':xmsadapter:debugCompileClasspath'.
   > Could not find com.huawei.hms:hwid:5.3.0.301.
     Searched in the following locations:
       - https://repo.maven.apache.org/maven2/com/huawei/hms/hwid/5.3.0.301/hwid-5.3.0.301.pom
       - https://jcenter.bintray.com/com/huawei/hms/hwid/5.3.0.301/hwid-5.3.0.301.pom
       - https://dl.google.com/dl/android/maven2/com/huawei/hms/hwid/5.3.0.301/hwid-5.3.0.301.pom
       - https://developer.huawei.com/repo/com/huawei/hms/hwid/5.3.0.301/hwid-5.3.0.301.pom
     Required by:
         project :xmsadapter
   > Could not find com.huawei.hms:push:5.3.0.300.
     Searched in the following locations:
       - https://repo.maven.apache.org/maven2/com/huawei/hms/push/5.3.0.300/push-5.3.0.300.pom
       - https://jcenter.bintray.com/com/huawei/hms/push/5.3.0.300/push-5.3.0.300.pom
       - https://dl.google.com/dl/android/maven2/com/huawei/hms/push/5.3.0.300/push-5.3.0.300.pom
       - https://developer.huawei.com/repo/com/huawei/hms/push/5.3.0.300/push-5.3.0.300.pom
     Required by:
         project :xmsadapter

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':xmsadapter:xmsaux:xh:processDebugResources'.
> Could not resolve all files for configuration ':xmsadapter:xmsaux:xh:debugCompileClasspath'.
   > Could not find com.huawei.hms:push:5.3.0.300.
     Required by:
         project :xmsadapter:xmsaux:xh

为什么gradle在华为的仓库中找不到push和hwid kits?

xmsadapter build.gradle:

apply plugin: 'com.android.library'
apply plugin: 'com.huawei.agconnect'
apply from: 'scripts/productFlavor.gradle'

android {
    compileSdkVersion 29
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 29
    }

    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }

}

dependencies {
    //Account
    compileOnly 'com.google.android.gms:play-services-base:17.1.0'
    compileOnly 'com.google.android.gms:play-services-auth-base:17.1.0'
    compileOnly 'com.google.android.gms:play-services-basement:17.1.0'
    compileOnly 'com.google.android.gms:play-services-auth-api-phone:17.4.0'
    compileOnly 'com.huawei.hms:hwid:5.3.0.301'
    compileOnly 'com.google.android.gms:play-services-auth:18.0.0'
    //Basement
    compileOnly 'com.huawei.hms:base:6.0.1.302'
    compileOnly 'com.google.android.gms:play-services-tasks:17.0.0'
    //Push
    compileOnly 'com.google.android.gms:play-services-gcm:17.0.0'
    compileOnly 'com.google.firebase:firebase-messaging:20.2.0'
    compileOnly 'com.huawei.hms:hianalytics:6.1.0.300'
    compileOnly 'com.google.firebase:firebase-core:17.0.0'
    compileOnly 'com.huawei.hms:push:5.3.0.300'
    //Crashlytics
    compileOnly 'com.google.firebase:firebase-crashlytics:17.0.0-beta02'
    compileOnly 'com.huawei.agconnect:agconnect-crash:1.5.0.300'
    //Analytics
    compileOnly 'com.google.firebase:firebase-analytics:18.0.0'
    compileOnly 'com.google.android.gms:play-services-analytics:17.0.0'
}

xmsaux build.gradle:

apply plugin: 'com.android.library'
apply from: '../scripts/productFlavor.gradle'
apply from: 'scripts/copy-dex.gradle'

android {
    compileSdkVersion 29
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 29

        consumerProguardFiles 'proguard.txt'
    }

    buildTypes {
        debug {
            buildConfigField("String", "XG_BIN_NAME", "\"xg.apk\"")
            buildConfigField("String", "XH_BIN_NAME", "\"xh.apk\"")
        }
        release {
            buildConfigField("String", "XG_BIN_NAME", "\"xg.apk\"")
            buildConfigField("String", "XH_BIN_NAME", "\"xh.apk\"")
        }
    }

    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
}

dependencies {
    compileOnly project(':xmsadapter')

    //Account
    compileOnly 'com.google.android.gms:play-services-base:17.1.0'
    compileOnly 'com.google.android.gms:play-services-auth-base:17.1.0'
    compileOnly 'com.google.android.gms:play-services-basement:17.1.0'
    compileOnly 'com.google.android.gms:play-services-auth-api-phone:17.4.0'
    compileOnly 'com.huawei.hms:hwid:5.3.0.301'
    compileOnly 'com.google.android.gms:play-services-auth:18.0.0'
    //Basement
    compileOnly 'com.huawei.hms:base:6.0.1.302'
    compileOnly 'com.google.android.gms:play-services-tasks:17.0.0'
    //Push
    compileOnly 'com.google.android.gms:play-services-gcm:17.0.0'
    compileOnly 'com.google.firebase:firebase-messaging:20.2.0'
    compileOnly 'com.huawei.hms:hianalytics:6.1.0.300'
    compileOnly 'com.google.firebase:firebase-core:17.0.0'
    compileOnly 'com.huawei.hms:push:5.3.0.300'
    //Crashlytics
    compileOnly 'com.google.firebase:firebase-crashlytics:17.0.0-beta02'
    compileOnly 'com.huawei.agconnect:agconnect-crash:1.5.0.300'
    //Analytics
    compileOnly 'com.google.firebase:firebase-analytics:18.0.0'
    compileOnly 'com.google.android.gms:play-services-analytics:17.0.0'

}


afterEvaluate {
    Project project ->
        def cleanTask = project.tasks.getByName('clean')
        cleanTask.doLast {
            File assetsPath = new File(project.android.sourceSets.main.assets.srcDirs[0].path);
            assetsPath.deleteDir();
        }
}

项目级build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.4.0'
    ext.gson_version = '2.8.6'

    repositories {
        mavenCentral()
        jcenter()
        google()
        maven {
            url 'https://developer.huawei.com/repo/'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.2'
        classpath 'com.google.gms:google-services:4.3.5' // google-services plugin
        classpath 'com.google.firebase:perf-plugin:1.3.4'  // Performance Monitoring plugin

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"

        classpath 'com.huawei.agconnect:agconnect-apms-plugin:1.4.1.305'
        classpath 'com.huawei.agconnect:agcp:1.4.2.300'

        // Add the Crashlytics Gradle plugin
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
        // Add the App Distribution Gradle plugin
        classpath 'com.google.firebase:firebase-appdistribution-gradle:2.1.3'
    }
}

allprojects {
    repositories {
        mavenCentral()
        jcenter()
        google()
        maven {
            url 'https://developer.huawei.com/repo/'
        }
    }

    buildscript {
        repositories {
            mavenCentral()
            jcenter()
            google()
        }
    }
}

应用程序模块build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.firebase.appdistribution'
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'jacoco'
apply plugin: 'de.undercouch.download'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlinx-serialization'
apply plugin: 'com.google.gms.google-services'
apply from: '../xmsadapter/scripts/productFlavor.gradle'

////////////////////////////////////////////////////////////////////////
// The app's version name. Increment this before you make a new release!
////////////////////////////////////////////////////////////////////////
def getVersionName = { ->
    return "6.2.1"
}

/////////////////////////////////////////////////////////////////////////////////
// The whatsNewScreen version name. Increment this before you make a new release!
/////////////////////////////////////////////////////////////////////////////////
def getWhatsNewVersion = { ->
    return "6.2.1"
}

def getVersionCode = { ->
    int FALLBACK_NUMBER = 1
    int buildNumber = System.getenv("BUILD_NUMBER") as Integer ?: FALLBACK_NUMBER
    if (buildNumber == FALLBACK_NUMBER) {
        println "Environment variable BUILD_NUMBER is not set."
    }
    println "VersionCode is set to $buildNumber"
    return buildNumber
}

/////////////////////////////////////////////////////////
// update string res from locolise.biz
// run: gradlew updateTranslations
////////////////////////////////////////////////////////

task downloadTranslationsZipFile(type: Download) {
    src 'https://localise.biz/api/export/archive/xml.zip?filter={redacted}'
    dest new File(buildDir, 'translations.zip')
}

task openTranslations(dependsOn: downloadTranslationsZipFile, type: Copy) {
    from zipTree(downloadTranslationsZipFile.dest)
    into buildDir
    include "{redacted}"
}

task updateTranslations(dependsOn: openTranslations, type: Copy) {
    from new File(buildDir, '{redacted}-mobile-xml-archive/res')
    into 'src/main/res'
}

android {
    compileSdkVersion 29

    dexOptions {
        preDexLibraries = false
    }

    signingConfigs {
        release {
            storeFile file(keyStoreFile)
            keyAlias keyStoreAlias
            keyPassword keyPw
            storePassword storePw
        }
        development {
            storeFile file("dev.keystore")
            keyAlias "androiddebugkey"
            keyPassword "android"
            storePassword "android"
        }
    }

    defaultConfig {
        applicationId "{redacted}"
        manifestPlaceholders = [hostNameProd: "{redacted}",
                                hostNameStaging: "{redacted}",
                                fbScheme: "{redacted}"]
        minSdkVersion 21
        targetSdkVersion 29
        versionCode getVersionCode()
        versionName getVersionName()
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        // limit which language resources are taken into apk
        resConfigs "en", "fr", "el", "de", "it", "es", "ru"
        vectorDrawables.useSupportLibrary = true
        buildConfigField "boolean", "RELEASE_BACKEND", "false"
    }

    packagingOptions {
        exclude 'LICENSE.txt' // needed for tests
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'

        exclude('org/apache/commons/codec/language/bm/*.txt')
        //  124 files (uncompressed 215kb) with unused language specific rules
    }

    lintOptions {
        abortOnError false
    }

    buildTypes {
        debug {
            resValue "string", "app_name", "DEBUG {redacted}"
            applicationIdSuffix ".debug" // will override ACPT version
            versionNameSuffix "-debug"
            debuggable true
            minifyEnabled false
            shrinkResources false
            buildConfigField "boolean", "ENABLE_DIAGNOSTICS", "false"
            ext.enableCrashlytics = false

            pseudoLocalesEnabled true
            buildConfigField "String", "WHATS_NEW_VERSION", "\"${getWhatsNewVersion()}\""

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            matchingFallbacks = ['release']
            lintOptions {
                disable 'MissingTranslation'
            }
        }

        development {
            resValue "string", "app_name", "DEV {redacted}"
            applicationIdSuffix ".development" // will override ACPT version
            versionNameSuffix "-development"
            debuggable true
            minifyEnabled false
            shrinkResources false
            buildConfigField "boolean", "ENABLE_DIAGNOSTICS", "true"
            ext.enableCrashlytics = false

            pseudoLocalesEnabled true
            buildConfigField "String", "WHATS_NEW_VERSION", "\"${getWhatsNewVersion()}\""

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            matchingFallbacks = ['release']
            firebaseAppDistribution {
                serviceCredentialsFile = firebaseDistributionFile
                groups = '{redacted}-internal, lit-testers'
            }
        }

        snapshot {
            resValue "string", "app_name", "SNAP {redacted}"
            applicationIdSuffix ".snapshot"
            versionNameSuffix "-snapshot"
            debuggable true
            minifyEnabled false
            shrinkResources false
            buildConfigField "boolean", "ENABLE_DIAGNOSTICS", "false"
            ext.enableCrashlytics = true

            pseudoLocalesEnabled true
            buildConfigField "String", "WHATS_NEW_VERSION", "\"${getWhatsNewVersion()}\""

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            matchingFallbacks = ['release']
            firebaseAppDistribution {
                serviceCredentialsFile = firebaseDistributionFile
                groups = '{redacted}-internal, lit-testers'
            }
        }

        acceptance {
            resValue "string", "app_name", "ACPT {redacted}"
            applicationIdSuffix ".acceptance"
            versionNameSuffix "-acceptance"
            debuggable true
            minifyEnabled true
            shrinkResources true
            buildConfigField "boolean", "ENABLE_DIAGNOSTICS", "true"
            ext.enableCrashlytics = true

            buildConfigField "String", "WHATS_NEW_VERSION", "\"${getWhatsNewVersion()}\""

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            matchingFallbacks = ['release']
            firebaseAppDistribution {
                serviceCredentialsFile = firebaseDistributionFile
                groups = '{redacted}-internal, lit-testers'
            }
        }

        release {
            resValue "string", "app_name", "{redacted}"
            minifyEnabled true
            shrinkResources true
            buildConfigField "boolean", "ENABLE_DIAGNOSTICS", "true"
            ext.enableCrashlytics = true

            buildConfigField "String", "WHATS_NEW_VERSION", "\"${getWhatsNewVersion()}\""
            buildConfigField "boolean", "RELEASE_BACKEND", "true"
            manifestPlaceholders = [hostName: "{redacted}",
                                    fbScheme: "{redacted}"]

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            firebaseAppDistribution {
                serviceCredentialsFile = firebaseDistributionFile
                groups = '{redacted}-internal, lit-testers'
            }
        }

        debugProd {
            initWith(debug)
            ext.enableCrashlytics = false
            buildConfigField "boolean", "RELEASE_BACKEND", "true"
            matchingFallbacks = ['release']
        }

        unitTest {
            testCoverageEnabled = true

            // same as debug!
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            applicationIdSuffix ".debug"
            versionNameSuffix "-debug"
            // disable crashlytics and gtm for developer builds
            buildConfigField "boolean", "ENABLE_DIAGNOSTICS", "false"
            ext.enableCrashlytics = false

            resValue "string", "app_name", "DEBUG {redacted}"

            // adds version name for whatsNew feature
            buildConfigField "String", "WHATS_NEW_VERSION", "\"${getWhatsNewVersion()}\""

            matchingFallbacks = ['release']
        }
    }

    sourceSets {

        development {
            java.srcDirs = ['src/debug/java']
            res.srcDirs = ['src/debug/res']
            assets.srcDirs = ['src/debug/assets']
        }

        snapshot {
            java.srcDirs = ['src/debug/java']
            res.srcDirs = ['src/debug/res']
            assets.srcDirs = ['src/debug/assets']
        }

        acceptance {
            java.srcDirs = ['src/debug/java']
            res.srcDirs = ['src/acceptance/res', 'src/debug/res']
            assets.srcDirs = ['src/debug/assets']
        }

        release {
            java.srcDirs = ['src/release/java']
        }

        debugProd {
            java.srcDirs = ['src/debug/java']
            res.srcDirs = ['src/debug/res']
            assets.srcDirs = ['src/debug/assets']
        }
    }

    project.archivesBaseName = "${new Date().format("yyMMdd")}{redacted}${getVersionName()}_${getVersionCode()}"

    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }

    android.applicationVariants.all { variant ->

        variant.buildConfigField "String", "LANGUAGES", "\"${variant.mergedFlavor.resourceConfigurations.join(',')}\""

        if (variant.buildType.pseudoLocalesEnabled) {
            variant.mergedFlavor.resourceConfigurations.add("en-rXA")
            variant.mergedFlavor.resourceConfigurations.add("ar-rXB")
        }
    }
}

dependencies {
    implementation project(':xmsadapter')
    implementation project(':xmsadapter:xmsaux')
    compileOnly project(':xmsadapter:xmsaux:xapi')
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // Modules
    implementation project(':backends')
    implementation project(':pdflib')

    // Kotlin
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"

    // KotlinX
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1"
    implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:1.0-M1-1.4.0-rc"

    // AndroidX
    implementation "androidx.lifecycle:lifecycle-runtime:2.3.1"
    implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.1"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"
    implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
    implementation 'androidx.viewpager2:viewpager2:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.browser:browser:1.3.0'
    implementation 'androidx.recyclerview:recyclerview:1.2.0'
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.preference:preference:1.1.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
    implementation "androidx.webkit:webkit:1.4.0"

    // Google
    implementation platform('com.google.firebase:firebase-bom:26.1.0')
    implementation 'com.google.firebase:firebase-analytics'
    implementation "com.google.firebase:firebase-messaging"
    implementation 'com.google.firebase:firebase-crashlytics'
    implementation 'com.google.android.gms:play-services-analytics:17.0.0' // needed for tag manager
    implementation 'com.google.android.gms:play-services-tagmanager:17.0.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation "com.google.code.gson:gson:$gson_version"
    implementation 'com.google.android.gms:play-services-auth:19.0.0'
    implementation 'com.google.android.gms:play-services-base:17.1.0'
    implementation 'com.google.android.gms:play-services-auth-base:17.1.0'
    implementation 'com.google.android.gms:play-services-basement:17.1.0'
    implementation 'com.google.android.gms:play-services-auth-api-phone:17.4.0'
    implementation 'com.huawei.hms:hwid:5.3.0.301'
    // Firebase Performance
    implementation 'com.google.firebase:firebase-perf-ktx'



    // Jumio document scanner
    implementation "com.jumio.android:core:3.6.2@aar"
    implementation "com.jumio.android:nv:3.6.2@aar"
    implementation "com.jumio.android:nv-barcode:3.6.2@aar"
    implementation "com.jumio.android:nv-mrz:3.6.2@aar"
    implementation "com.jumio.android:nv-ocr:3.6.2@aar"
    implementation 'androidx.room:room-runtime:2.3.0' // required by Jumio

    // Misc
    implementation 'com.facebook.android:facebook-login:9.1.1'
    implementation 'com.jakewharton.threetenabp:threetenabp:1.3.1'
    implementation 'com.github.siyamed:android-shape-imageview:0.9.3'
    implementation 'org.apache.commons:commons-lang3:3.12.0'
    // ion
    implementation 'com.koushikdutta.ion:ion:3.1.0'
    implementation 'me.relex:circleindicator:2.1.6'
    implementation 'com.scottyab:rootbeer-lib:0.0.8' // Root detection
    implementation 'com.squareup:android-times-square:1.7.10@aar'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'// Date Picker

    // Unit Tests
    testImplementation 'junit:junit:4.13.2'
    testImplementation 'org.hamcrest:hamcrest-core:2.2'
    testImplementation 'org.hamcrest:hamcrest-library:2.2'
    testImplementation 'org.hamcrest:hamcrest-integration:1.3'

    //leakcanary
    // debugImplementation because LeakCanary should only run in debug builds.
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'


    // Android JUnit Tests
    androidTestImplementation 'junit:junit:4.13.2'
    implementation 'androidx.annotation:annotation:1.2.0'
    androidTestImplementation 'androidx.annotation:annotation:1.2.0'
    androidTestImplementation 'androidx.test:core:1.3.0'
    androidTestImplementation 'androidx.test:runner:1.3.0'
    androidTestImplementation 'androidx.test:rules:1.3.0'
    androidTestImplementation 'org.hamcrest:hamcrest-library:2.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.3.0'
    androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
    implementation 'com.huawei.hms:push:5.0.4.302'
    implementation 'com.huawei.hms:hwid:5.0.5.301'
    implementation 'com.huawei.hms:hianalytics:5.0.5.301'
    implementation 'com.huawei.hms:identity:4.0.4.300'
    implementation 'com.huawei.agconnect:agconnect-core:1.5.2.300'
}
apply plugin: 'com.huawei.agconnect'

最佳答案

尝试将您的依赖项更新到最新的可用版本。

'com.huawei.hms:hwid:5.3.0.301' --> 'com.huawei.hms:hwid:6.0.1.300' 'com.huawei.hms:push:5.3.0.300' --> 'com .huawei.hms:push:5.3.0.304'

这里是最新 SDK 版本列表的链接。 https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/hmssdk-kit-0000001050042513

关于android - 使用HMS Toolkit添加HMS和GMS时找不到com.huawei.hms :hwid:5. 3.0.301和推送套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68921399/

相关文章:

Android,从 "Recent apps"删除应用程序时取消通知

android - AndroidX 中的 MotionLayout 不存在

gradle - asciidoctor任务作为gradle构建的一部分

Java项目布局——能简单点吗?

android - 如何在屏幕关闭后保持播放状态

Android withText 选项不适用于 Huawei MediaPad (T1-A21L) 上的操作栏按钮

android - 静默登录成功后能否通过authAccount.getAccessToken()方法获取AccessToken

java - JSON 下载后 ListView 不更新

android - Recyclerview addOnScrollListener问题

gradle - 如何将JavaDocs复制到另一个位置