我有一个编译并正常工作的Gradle插件。我想随源代码一起分发一个使用Gradle插件的示例应用程序,这也将使我能够轻松地测试插件的更改。现在要做的是在buildScript
块中添加类路径依赖项。是否可以添加一个依赖于本地插件的插件,以便与示例项目一起编译?我现在遇到的主要问题是,在尝试同步示例项目时,插件不存在,导致失败。
我有一个编译并正常工作的Gradle插件。我想随源代码一起分发一个使用Gradle插件的示例应用程序,这也将使我能够轻松地测试插件的更改。现在要做的是在buildScript
块中添加类路径依赖项。是否可以添加一个依赖于本地插件的插件,以便与示例项目一起编译?我现在遇到的主要问题是,在尝试同步示例项目时,插件不存在,导致失败。
如果编写集成测试是您的最终目标,我仍然建议使用ProjectBuilder。您可以在此处的第39.5.4节中看到一个示例。在Gradle源代码中有更多真实世界的测试实现示例。例如,请参见此处。
话虽如此,我对您发布的文字问题感到好奇,尝试了一些东西。对我有效的是:
buildscript{
repositories{
...
}
dependencies{
classpath files('relative/path/to/plugin.jar')
}
}
apply plugin: fully.qualified.package.PluginClassName
请注意,类名不需要用引号 '
括起来变成字符串。plugin.jar
。此时,您可能会依赖于外部存储库依赖项。classpath project(':plugin-project')
的项目依赖项工作。
buildPluginProject
时,它仍然会检查插件是否在其他配置中已经构建。 - Ben当我在Android Studio中调试gradle插件
时遇到了问题,最终我解决了它。
首先,将您的gradle插件
上传到本地maven。
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile gradleApi()
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
group='com.egos.gradle.plugins'
name='plugintest'
version='0.0.1'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('../repo'))
}
}
}
执行gradle uploadArchives
命令,然后使用本地插件。
buildscript {
repositories {
maven {
url uri('../repo')
}
}
dependencies {
classpath group: 'com.egos.gradle.plugins',
name: 'plugintest',
version: '0.0.1'
}
}
apply plugin: 'com.egos'
我使用组合构建清晰地解决了这个问题,正如多伦所注意到的。下面是步骤:
group
的build.gradle
定义你的插件:// some-plugin/build.gradle
...
group = "some.group.id"
...
settings.gradle
中如下引用您的项目:// settings.gradle
...
includeBuild 'some-plugin'
// some-project/build.gradle
buildscript {
dependencies {
classpath "some.group.id:some-plugin"
}
}
apply(plugin: "your.plugin.id")
注意类路径是由插件 gradle 文件中定义的组名和其目录名称组成的。
includeBuild
需要插件的路径。无论如何,我这样做时遇到了有关Kotlin版本的错误:https://stackoverflow.com/questions/68189405/plugin-cannot-have-different-kotlin-version-could-not-initialize-class-org-jetb 你有什么想法吗? - Guerlando OCs当前Gradle版本为3.3(截至撰写本文),您可以使用Composite Build功能来替换插件依赖项。
例如,您可以使用以下命令在示例项目中构建(在示例项目的根目录中运行):
gradle build --include-build /path/to/local-plugin
这将从本地目录中选择您的插件。它甚至会先构建您的插件,然后使用刚构建的插件作为依赖项构建示例项目。
IDE也支持此功能: 在IntelliJ中配置Composite Build的简单说明
请参阅文档:https://docs.gradle.org/current/userguide/composite_builds.html
请注意,替换插件仅适用于buildscript块,而不适用于plugins块。
gradlePlugin {
plugins {
testgen {
id = "com.egos.gradle.plugins"
implementationClass = "com.egos.gradle.plugins.<PluginClassName>"
}
}
}
apply plugin: 'java-gradle-plugin'
或 plugins { id 'java-gradle-plugin' }
。 - Aliaksei