If writing integration tests is your eventual goal, I still recommend using ProjectBuilder. You can see an example of this in Section 39.5.4 here. There are a lot more real-world test implementation examples in gradle source. See here for instance.
That being said, I got curious about the literal question you posted and tried a few things. What did work for me is this:
buildscript{
repositories{
...
}
dependencies{
classpath files('relative/path/to/plugin.jar')
}
}
apply plugin: fully.qualified.package.PluginClassName
Note that the class name is not enclosed in '
quotes'
to make it a string.
This is not very useful since this declaration requires the plugin.jar
to be built and available before the project consuming the plugin is built - but at this point, you might as well be depending on an external repo dependency.
A second problem with this is that the transitive dependencies of the plugin project are not added to your plugin-consumer project automatically.
I couldn't get a project dependency like classpath project(':plugin-project')
to work inside buildscript.
One (extremely hacky) way to ensure that the plugin project is always build and available while building the plugin-consumer project is to have a "parent" build.gradle that always builds the plugin first before building the consumer project. I uploaded an example here.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…