【发布时间】:2015-07-13 13:22:31
【问题描述】:
这个想法很简单,我想直接在我的构建脚本中访问项目类。
我第一次尝试:
apply plugin: 'java'
tasks.create(name: 'randomTask', type: SourceTask) {
source.each {
println it
}
}
不幸的是,文件完全为零。
然后我决定试试compileJava:
apply plugin: 'java'
compileJava {
source.each {
println it
}
}
虽然我确实得到了将要编译的文件列表,但这并不是我真正需要的。我想获取文件的 Class 对象。
例如,如果我有com.example.SomeClass,我希望得到Class<com.example.SomeClass>,这样我就可以对这些类使用反射。
这是我想要的一个无效示例:
apply plugin: 'java'
tasks.create(name: 'randomTask', type: SomeMagicalType) {
UMLBuilder builder = UMLBuilder.builder()
classes.each { clazz ->
clazz.methods.each { method ->
builder.addMethod(method)
}
}
builder.build().writeToFile(file('out/application.uml'))
}
P.S.:我使用的是 Gradle 2.5 和 Java 8
【问题讨论】:
-
你需要编译类?
-
好吧,除非我可以在不编译的情况下获得 Class 对象,否则我确实可以。但是使用类加载器就可以了,所以现在一切都很好。
标签: java groovy gradle classpath