好的,所以我在项目构建之前运行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 {
...
}
答案 0 :(得分:2)
Gradle
版本具有three distinct phases,包括配置1和执行1。
您的translationsTask
任务是Exec任务。 workingDir
和commandLine
可以在此处进行配置。这些参数将在执行阶段使用。这样写的println
语句将包含在配置阶段。 doFirst
和doLast
闭包允许在执行阶段添加自定义操作。
以下是您的正确信息:
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}})