在gradle插件上工作。我试图将功能从gradle 6 ObjectFactory.namedDomainObjectList(Class<T> elementType)
移植到gradle 5.6.4。
我没有运气尝试过这个:
import org.gradle.testfixtures.ProjectBuilder
import org.gradle.api.internal.CollectionCallbackActionDecorator
import org.gradle.api.internal.DefaultDomainObjectCollection
def main() {
def project = ProjectBuilder.builder().build();
CollectionCallbackActionDecorator ccad;
def myList = project.objects.newInstance(DefaultDomainObjectCollection.class,
MyClass.class,
new ListElementSource(),
ccad);
}
static class MyClass implements Named {
@Override
String getName() {
return "foobar"
}
}
异常堆栈
org.gradle.api.reflect.ObjectInstantiationException: Could not create an instance of type org.gradle.api.internal.DefaultDomainObjectCollection.
at org.gradle.internal.instantiation.DependencyInjectingInstantiator.newInstance(DependencyInjectingInstantiator.java:54)
at org.gradle.api.internal.model.DefaultObjectFactory.newInstance(DefaultObjectFactory.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:190)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:55)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:151)
github: Source of gradle instantiation
最佳答案
这样解决:
def myList = new DefaultNamedDomainObjectList(
MyClass.class,
new Instantiator() {
@Override
def <T> T newInstance(Class<? extends T> aClass, Object... objects) throws ObjectInstantiationException {
project.objects.newInstance(aClass, objects)
}
},
new DynamicPropertyNamer())
关于gradle - 如何将 `ObjectFactory.namedDomainObjectList(…)`反向移植到Gradle(5.6.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61067302/