android - 如何在Gradle中一一执行任务

标签 android gradle

我有这个gradle构建文件。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
        classpath 'com.eriwen:gradle-css-plugin:1.2.1'
        classpath 'com.eriwen:gradle-js-plugin:1.5.1'
    }
}

apply plugin: 'android'
apply plugin: 'js'
apply plugin: 'css'

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/cordova-2.7.0.jar')
    compile files('libs/libGoogleAnalyticsV2.jar')
}

task MinifyJSForRelease {

tasks.add(name:"copyTask2", type:Copy){
    from 'assets/'
    into 'build/minifiedassets/assets'
}
it.dependsOn copyTask2
def tester = fileTree(dir:"build/minifiedassets/assets", include:"**/*.js");
println tester
tester.eachWithIndex {File file, idx ->
    tasks.add(name: "makeMinifyJS${idx}", type: com.eriwen.gradle.js.tasks.MinifyJsTask) {
        source = file
        dest = "${file.path}"
        closure {

            compilerOptions.languageIn = "ECMASCRIPT5"
        }

    }
}

it.dependsOn tasks.matching { Task task -> task.name.startsWith("makeMinifyJS")}
}

build.dependsOn MinifyJSForRelease

android {
compileSdkVersion 17
buildToolsVersion "17"

signingConfigs {
    release {
        storeFile file('keystores/mobilecoe_android.keystore')
        storePassword "mobilecoe"
        keyAlias "MobileCoE"
        keyPassword "mobilecoe"
    }
}

defaultConfig {
    minSdkVersion 10
    targetSdkVersion 16
}
buildTypes {
    debug {

        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                java.srcDirs = ['src']
                resources.srcDirs = ['src']
                aidl.srcDirs = ['src']
                renderscript.srcDirs = ['src']
                res.srcDirs = ['res']
                assets.srcDirs = ['assets']
            }

            instrumentTest.setRoot('tests')
        }
    }

    release {

        signingConfig signingConfigs.release
        zipAlign true
        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                java.srcDirs = ['src']
                resources.srcDirs = ['src']
                aidl.srcDirs = ['src']
                renderscript.srcDirs = ['src']
                res.srcDirs = ['res']
                assets.srcDirs = ['build/minifiedassets/assets']
            }

            instrumentTest.setRoot('tests')
        }
    }
}
}

我想像第一个东西那样运行任务MinifyJSForRelease,就是将 Assets 文件夹复制到我想要的位置,然后在完成后我想缩小JS文件。
现在,当我运行任务时,它会复制文件夹但未到达末尾,下一个功能会说它没有什么要缩小的,但是如果我第二次运行任务(当文件夹已被复制时),它将执行该操作并执行所有操作。

我做错了什么?
我需要:
  • 复制文件夹
  • 获取文件夹并缩小其js文件

  • 有人可以帮我吗?

    最佳答案

    我是Gradle的全能主义者,所以我只能为您提供有根据的猜测:

  • 统一声明依赖项的方式

    taskB。取决于任务A
  • 强制执行任务的顺序(加上依赖项)

    taskB.mustRunAfter(taskA)
  • 添加日志,以查看任务是否已执行VS任务未达到您的期望。

  • 向任务添加依赖项/订购任务

    http://www.gradle.org/docs/current/userguide/more_about_tasks.html

    请在获得解决方案后向我们提供解决方案!

    关于android - 如何在Gradle中一一执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545188/

    相关文章:

    android - 无法接收来自 servlet 的响应

    java - 将 Neo4j EmbeddedDriver 与 Spring Boot 和 SDN 结合使用失败,并出现应用程序启动时的依赖问题

    java - Android ArrayAdapter 不显示每行中的所有数据

    java - android.os.NetworkOnMainThreadException 里面新线程

    android - 值从滚动 ListView 中消失 - Android

    android - 是什么导致android异常 "You need to use a Theme.AppCompat theme (or descendant) with this activity."

    java - Gradle缓存与存储库的哈希比较

    gradle - 有没有办法使用 gradle 6.0 定义要在 settings.gradle.kts 和项目/子项目 build.gradle.kts 中使用的属性?

    java - gradle构建后无法从jar中的资源加载文件

    android lint - 使用 apache odata-client-android 时出现 InvalidPackage 错误