假设我已经创建了自己的 Maven 插件,该插件作为 JAR 本地存储在某个任意目录中,但没有发布到本地 Maven 存储库。有没有办法,比如通过
mvn
命令行选项,将此插件 JAR“注入”到 Maven 构建/项目中,而该项目本身尚未声明对该插件的依赖关系?
如果这在单个
mvn
CLI 调用中无法直接实现(既注入插件 JAR 又执行该插件的目标),是否可以通过多步骤过程实现?就像,我假设我可以使用 install-file
插件中的 maven-install-plugin
目标首先将其发布到本地 Maven 存储库,但是接下来呢?然后我可以通过它的坐标而不是 JAR 的路径将它注入到 Maven 构建/项目中吗?
这就是我现在想出的多阶段过程:
#!/bin/bash
POM_FILE=$1
# Pretent that the plugin is only available locally.
curl -o cyclonedx-maven-plugin.jar https://repo1.maven.org/maven2/org/cyclonedx/cyclonedx-maven-plugin/2.8.1/cyclonedx-maven-plugin-2.8.1.jar
# Install the plugin JAR to the local Maven repository in order to be able to refer to it via GAV coordinates.
mvn org.apache.maven.plugins:maven-install-plugin:3.1.3:install-file -Dfile=cyclonedx-maven-plugin.jar
# Run the plugin's "makeAggregateBom" goal on the provided POM file.
mvn org.cyclonedx:cyclonedx-maven-plugin:2.8.1:makeAggregateBom -f $POM_FILE
# Remove the downloaded plugin JAR.
rm cyclonedx-maven-plugin.jar
我仍然希望避免部署到本地 Maven 存储库的步骤,但我不知道如何引用该插件。