在我的Android应用程序中,我需要生成源代码并在应用程序中使用它.
为此我创建了任务genSources(使用教程)来生成源代码.如果单独运行它可以正常工作.
在我的情况下,我需要自动运行源代码生成.
从教程中我发现了以下命令:
compileJava.dependsOn(genSources)
但这是
申请插件的未知命令:'com.android.library'gradle
抛出以下异常:
Error:(35, 0) Could not find property 'compileJava' on project ':data'.
看起来它可以与apply plugin一起使用:'Java',
但我不能将这两个插件一起使用
如何在编译之前解决此问题并生成所需的源代码?
的build.gradle
apply plugin: 'com.android.library'
configurations {pmd}
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 19
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
buildscript {
repositories {
maven {
url "http://repo1.maven.org/maven2/"
}
}
dependencies {
classpath group: 'net.sourceforge.fmpp', name: 'fmpp', version: '0.9.14'
}
ant.taskdef(name: 'fmpp', classname:'fmpp.tools.AntTask', classpath: buildscript.configurations.classpath.asPath)
}
task genSources << {
println "Generating sources...."
ant.fmpp configuration:"src/main/resources/codegen/config.fmpp",
sourceRoot:"src/main/resources/codegen/templates",
outputRoot:"target/generated-sources/main/java";
}
compileJava.dependsOn(genSources)
sourceSets {
main {
java {
srcDir 'target/generated-sources/main/java'
}
}
}
dependencies {
...
}
Run Code Online (Sandbox Code Playgroud)
更新
我找到了一些解决方案,至少不会抛出异常
gradle.projectsEvaluated {
compileJava.dependsOn(genSources)
}
Run Code Online (Sandbox Code Playgroud)
然后我执行gradle build但没有任何反应
Zar*_*kka 12
使用gradle 2.2+,这应该工作:
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn genSources
}
Run Code Online (Sandbox Code Playgroud)
如果您在评估时也希望它发生(例如,当您在android studio中将项目与gradle同步时),您可以这样做:
gradle.projectsEvaluated {
preBuild.dependsOn genSources
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6333 次 |
| 最近记录: |