Gradle插件:无法转换“;A.txt";将类Java.io.File转换为类org.gradle.api.File.Property
我正在尝试用DSL编写一个插件:Gradle插件:无法转换“;A.txt";将类Java.io.File转换为类org.gradle.api.File.Property,java,android,gradle,build,gradle-plugin,Java,Android,Gradle,Build,Gradle Plugin,我正在尝试用DSL编写一个插件: model { model1 {input = file(A.txt) output = file("/")} model2 {input = file(A.txt) output = file("/")} } 基于model1和model2,我将进行处理,并将结果输出到输出目录中 class Extension { final String name final Property<file> i
model {
model1 {input = file(A.txt) output = file("/")}
model2 {input = file(A.txt) output = file("/")}
}
基于model1和model2,我将进行处理,并将结果输出到输出目录中
class Extension
{
final String name
final Property<file> input
final Property<file> output
@Inject
Extension(String name,ObjectFactory objectfactory)
{
this.name = name
input = objectfactory.property(File)
output = objectfactory.property(File)
}
}
类扩展
{
最终字符串名
最终属性输入
最终属性输出
@注入
扩展名(字符串名称,ObjectFactory ObjectFactory)
{
this.name=name
输入=objectfactory.property(文件)
输出=objectfactory.property(文件)
}
}
///插件类
class Plugin implements Plugin<Project> {
@Override
void apply(final Project project) {
NamedDomainObjectContainer<Extension> container= project.container(Extension) {
name -> new Extension(name, project.getObjects());
}
project.getExtensions().add("model", container);
container.each {
String taskName = "model" + name;
project.tasks.create(taskName, Task) {
input.set(input)
output.set(output)
}
}
}
类插件实现插件{
@凌驾
无效申请(最终项目){
NamedDomainObjectContainer容器=project.container(扩展名){
名称->新扩展(名称,project.getObjects());
}
project.getExtensions().add(“模型”,容器);
每个集装箱{
字符串taskName=“model”+名称;
project.tasks.create(任务名,任务){
输入。设置(输入)
output.set(输出)
}
}
}
}
//任务类
class Deploy extends DefaultTask
{
@InputFile
Property<File> input = project.objects.property(File)
@OutputFile
Property<File> output= project.objects.property(File)
@TaskAction
def task()
{
//custom logic
}
}
类部署扩展了DefaultTask
{
@输入文件
属性输入=project.objects.Property(文件)
@输出文件
属性输出=project.objects.Property(文件)
@任务行动
def任务()
{
//自定义逻辑
}
}
这段代码的灵感来源于https://guides.gradle.org/implementing-gradle-plugins/(服务器环境插件)
但是当我运行这个时,我无法将Java.io.File类的“A.txt”转换为org.gradle.api.File.Property类
有人能告诉我这里的问题和解决方法吗
谢谢
额外观察:
当我在build.gradle中更改=with.set时,错误会更改为stackoverflow您确定不想将字符串传递给
文件
方法,例如文件('a.txt')
?是的,我也尝试了同样的转换错误,字符串无法转换为属性。