如何在Android Studio中使用Gradle进行编译之前运行jar?

时间:2018-05-14 13:52:55

标签: android-studio gradle

好的,所以我在项目构建之前运行jar有几个问题,但我终于找到了解决方案。 jar会根据cvs文件生成翻译文件。

如果我运行./gradlew taskname项目是构建的,则运行脚本并生成文件。如果我从Android工作室运行一切都很好但是如果我运行./gradlew(没有目标)项目将被构建并且脚本似乎将运行但是jar将生成的文件不会出现! !!

为什么会这样?

注意:jar使用mkdirs并且没有任何问题。

Gradle代码

task translationsTask(type: Exec) {
    println("Running jar from gradle with shell script.")
    workingDir rootDir
    commandLine './test.sh'
}
preBuild.dependsOn(translationsTask)

android {
...
}

1 个答案:

答案 0 :(得分:2)

Gradle版本具有three distinct phases,包括配置1和执行1。

您的translationsTask任务是Exec任务。 workingDircommandLine可以在此处进行配置。这些参数将在执行阶段使用。这样写的println语句将包含在配置阶段。 doFirstdoLast闭包允许在执行阶段添加自定义操作。

以下是您的正确信息:

task translationsTask(type: Exec) {
    println("Configuring the translationsTask")
    workingDir rootDir
    commandLine './test.sh'
    doFirst {
            println("Running jar from gradle with shell script, before the command line")
    }
    doLast {
            println("Running jar from gradle with shell script, after the command line")
    }
}

只有调用gradlew才会显示配置translationsTask (没有执行阶段,因为没有目标任务)。调用gradlew taskname将显示所有消息,因为存在目标任务并且调用了Android preBuild任务(因为translationsTask preBuild取决于{{1}})