如何在运行时为Maven、Gradle插件注入依赖,通过CLI执行未在pom配置的插件
运行时为Maven/Gradle插件注入依赖的实现方案
Maven 侧实现
Maven原生支持无需在pom.xml中声明插件、同时运行时注入插件依赖的需求,具体用法如下:
- 调用未声明插件的基础格式为指定插件全坐标执行目标:
mvn [插件groupId]:[插件artifactId]:[插件版本]:[执行目标] - 运行时注入依赖使用通用参数
-Dplugin.dependencies,多个依赖用英文逗号分隔,每个依赖填写[依赖groupId]:[依赖artifactId]:[依赖版本]即可,完整示例:mvn org.apache.maven.plugins:maven-checkstyle-plugin:3.3.1:check \ -Dplugin.dependencies=com.puppycrawl.tools:checkstyle:10.17.0,org.slf4j:slf4j-simple:2.0.9 - 如需在项目目录外执行,直接在任意目录运行上述命令即可,也可追加
-f /目标项目/pom.xml参数指定要作用的项目。
Gradle 侧实现
Gradle可通过初始化脚本实现无需修改项目配置、运行时注入插件和依赖的需求:
- 先编写初始化脚本(如命名为
plugin-init.gradle),示例内容如下:initscript { repositories { mavenCentral() } // 同时注入插件和所需的额外依赖 dependencies { classpath "com.example:your-plugin-id:1.0.0", "com.example:your-extra-dependency:2.1.0" } } // 应用插件 apply plugin: com.example.YourPluginMainClass - 命令行执行时指定初始化脚本即可,无需修改项目的
build.gradle配置:gradle --init-script /路径/to/plugin-init.gradle your-plugin-goal - 如需完全通过命令行参数传递依赖,可通过
-P参数传入依赖坐标,在初始化脚本中读取参数动态加载即可。
内容的提问来源于stack exchange,提问作者HerosOfStrom
相关产品推荐
相关产品推荐

