难,搞了1星期了,关于gradle的task无法执行的问题

cnaaa8 2018-12-11 04:52:11
task compilesingle(type: JavaCompile) {
println("compilesingle");
source = './src/main/java'
include "diggertest/com/mylibrary/Single.java"
classpath = project.configurations.buildDependencies
destinationDir = file('./bin')
}


以上代码通过gradlew compilesingle 就能运行编译成class,但是我想自动的,通过以下代码就不行,哪里错了?而且为什么每次跑项目都会自动运行下上面的代码,但是没有任何效果
this.afterEvaluate {
tasks.matching {
// 以process开头以ReleaseJavaRes或DebugJavaRes结尾的task
it.name.equals("compileDebugJavaWithJavac")
}.each { task ->
//compilesingle
task.dependsOn ('compilesingle')
}
}
...全文
1731 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnaaa8 2019-01-04
  • 打赏
  • 举报
回复
引用 15 楼 jklwan 的回复:
[quote=引用 14 楼 cnaaa8 的回复:]搞明白依赖关系了,但是我这段代码,去掉doLast就正常,加上就不行,不能生成class文件,哪里错了呢

task compilesingle(type:JavaCompile) {

doLast {
println("compilesingle");
source = 'C:\\Users\\Administrator\\Desktop\\aptdemo-master\\app\\bin'
include ("com/example/spc/myapplication/*")
classpath =files(project.configurations.buildDependencies )
destinationDir = file('./bin')

}
}

只有task的对象才能用doLast,不能在定义中用doLast。[/quote]
那我想用这段代码的功能,该如何改呢?
jklwan 2018-12-20
  • 打赏
  • 举报
回复
引用 14 楼 cnaaa8 的回复:
搞明白依赖关系了,但是我这段代码,去掉doLast就正常,加上就不行,不能生成class文件,哪里错了呢

task compilesingle(type:JavaCompile)  {
    
    doLast {
        println("compilesingle");
        source = 'C:\\Users\\Administrator\\Desktop\\aptdemo-master\\app\\bin'
        include ("com/example/spc/myapplication/*")
        classpath =files(project.configurations.buildDependencies )
        destinationDir = file('./bin')

    }
}
只有task的对象才能用doLast,不能在定义中用doLast。
cnaaa8 2018-12-15
  • 打赏
  • 举报
回复
引用 12 楼 jklwan 的回复:
[quote=引用 11 楼 cnaaa8 的回复:]方便打包下你的代码吗?我这边一直不行,搞了好久都不行

自己下吧https://gitee.com/dschen/TaskApplication
[/quote]搞明白依赖关系了,但是我这段代码,去掉doLast就正常,加上就不行,不能生成class文件,哪里错了呢

task compilesingle(type:JavaCompile) {

doLast {
println("compilesingle");
source = 'C:\\Users\\Administrator\\Desktop\\aptdemo-master\\app\\bin'
include ("com/example/spc/myapplication/*")
classpath =files(project.configurations.buildDependencies )
destinationDir = file('./bin')

}
}

cnaaa8 2018-12-14
  • 打赏
  • 举报
回复
引用 6 楼 jklwan 的回复:
[quote=引用 5 楼 cnaaa8 的回复:]你看下我上面的代码,确定会在bin下的diggertest/com/mylibrary/中生成Single.class ???

确定啊。
as3.2.1,gradle 4.6,gradle plugin 3.2.1[/quote]方便打包下你的代码吗?我这边一直不行,搞了好久都不行
cnaaa8 2018-12-14
  • 打赏
  • 举报
回复
引用 12 楼 jklwan 的回复:
[quote=引用 11 楼 cnaaa8 的回复:]方便打包下你的代码吗?我这边一直不行,搞了好久都不行

自己下吧https://gitee.com/dschen/TaskApplication
[/quote]
我看你在compilesingle这个task里面 println("compileSingle : println") 了这个,这个不是应该依赖compileDebugJavaWithJavac 这个task吗?为什么刚编译就执行compilesingle这个task里的println("compileSingle : println")了啊
jklwan 2018-12-14
  • 打赏
  • 举报
回复
引用 11 楼 cnaaa8 的回复:
方便打包下你的代码吗?我这边一直不行,搞了好久都不行
自己下吧https://gitee.com/dschen/TaskApplication
cnaaa8 2018-12-13
  • 打赏
  • 举报
回复
引用 3 楼 jklwan 的回复:
[quote=引用 2 楼 cnaaa8 的回复:]
去掉引号也不行,不信你试下,没任何效果,生成不了编译的class文件

怎么会,我运行app,或者build都会生成啊。[/quote]方便发下你的代码吗?我gradle用的distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
classpath 'com.android.tools.build:gradle:3.0.0'

build代码如下,这下面代码单独写在sing.gradle 里面,然后在build.gradle 里面apply from: 'single.gradle' 这个文件,运行就不会生成class文件


configurations {
buildDependencies
}

dependencies {
buildDependencies "com.google.code.gson:gson:2.3.1"
}

/*task execlass(type: JavaExec) {
classpath = files('./bin', project.configurations.buildDependencies)
main = 'diggertest.com.mylibrary.Single'
}*/

task copyd(type: Copy) {
println("Copy");
from 'src/main/AndroidManifest.xml'
into './AndroidManifest.xml'

}

task compilesingle(type: JavaCompile) {
println("compilesingle");
source = './src/main/java'
include "diggertest/com/mylibrary/Single.java"
classpath = project.configurations.buildDependencies
destinationDir = file('./bin')
}



this.afterEvaluate {
tasks.matching {
// 以process开头以ReleaseJavaRes或DebugJavaRes结尾的task
it.name.equals("compileDebugJavaWithJavac")
/*it.name.startsWith('process') && (it.name.endsWith('ReleaseJavaRes') || it.name.endsWith
('DebugJavaRes'))*/
}.each { task ->
//compilesingle
println("afterEvaluate")
task.dependsOn (compilesingle)
}
}

jklwan 2018-12-13
  • 打赏
  • 举报
回复
引用 5 楼 cnaaa8 的回复:
你看下我上面的代码,确定会在bin下的diggertest/com/mylibrary/中生成Single.class ???
确定啊。 as3.2.1,gradle 4.6,gradle plugin 3.2.1
cnaaa8 2018-12-13
  • 打赏
  • 举报
回复
引用 3 楼 jklwan 的回复:
[quote=引用 2 楼 cnaaa8 的回复:]
去掉引号也不行,不信你试下,没任何效果,生成不了编译的class文件

怎么会,我运行app,或者build都会生成啊。[/quote]你看下我上面的代码,确定会在bin下的diggertest/com/mylibrary/中生成Single.class ???
cnaaa8 2018-12-12
  • 打赏
  • 举报
回复
引用 1 楼 jklwan 的回复:
task.dependsOn (compilesingle)
去掉引号

去掉引号也不行,不信你试下,没任何效果,生成不了编译的class文件
jklwan 2018-12-12
  • 打赏
  • 举报
回复
引用 2 楼 cnaaa8 的回复:
去掉引号也不行,不信你试下,没任何效果,生成不了编译的class文件
怎么会,我运行app,或者build都会生成啊。
jklwan 2018-12-11
  • 打赏
  • 举报
回复
task.dependsOn (compilesingle)
去掉引号

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧