无法找出 reflections-maven 插件的来源

Unable to find out where reflections-maven plugin comes from

那里执行了一个特定的 Maven 插件,我很难找出它的来源以删除或替换它,因为它的编译依赖性 link 被破坏了。我说的是 org.reflections:reflections-maven:0.9.8 that depends on org.jfrog.jade.plugins.common:jade-plugin-common:1.3.8 which Maven is not able to download from the central repository as the link redirects to OpenMind location and results in 404 (link).

与其在项目结构中包含这样的 JAR,我宁愿弄清楚 reflections-maven 插件在哪里定义,因为这个插件已停用 (GitHub) 但在构建过程中以某种方式执行 (mvn clean install).

[INFO] --- reflections-maven:0.9.5:reflections (default) @ my-module ---
[INFO] Reflections took 240 ms to scan 1 urls, producing 35 keys and 128 values 
[INFO] Reflections successfully saved in C:\Dev\my-project\my-parent\my-module\target\classes\META-INF\reflections\my-module-reflections.xml using XmlSerializer

我还没有找到 reflections-maven 在任何多模块项目结构中定义或使用的地方。注意我使用 Maven 3.3.9。我的尝试:

问题:如果我在本地仓库中没有这样的JAR,插件执行时构建失败。在那种情况下,我如何找到任何插件(特别是 reflections-maven 在我的情况下)在项目中 真正 导入和执行的方法?

随时在评论中询问更多信息。如果重要的话,我使用 IntelliJ Idea、Maven 3.3.9 和 Java 7。


解决方案 1(对我不起作用): 我已经尝试 运行 mvn -Dverbose=true -Doutput=./effective-pom.xml help:effective-pom 以及 effective-pom 显示与 reflections-maven 插件相同的输出,但没有关于其来源的附加信息。由于文件较大,我附上截图:

这可能是我的带有自定义 settings.xml 和特定 IntelliJ Idea 的 Maven 3.3.9 的问题。我假设 verbose 输出会导致真正的起源。


方案二:

安装 Netbeans(我默认使用 IntelliJ Idea)后,POM 编辑器的 Effective 选项卡终于让我找到了定义插件的真正来源。

遗憾的是,IntelliJ Idea 不通过其有效的 POM 提供此类导航,如果不手动单击父 POM,导航到原点几乎是不可能的。

Help:Effective-Pom:

mvn -Dverbose=true -Doutput=./effective-pom.xml help:effective-pom

我们可以分析一下我们的“有效pom”(Pom#inheritance, Pom#super-Pom)。

  • verbose 标志还会将源 pom(工件)作为注释添加到每个输出行。
  • output 设置输出文件。 (默认:打印到控制台)

“除其他外”它允许我们locate/override任何继承的plugin/dependency/“pom元素”。

不幸的是,输出生成:

  • 对于“微不足道”的项目,“数百”行 pom。
  • 对于“非平凡”(spring-boot-starter),它很容易进入“一万”(pom 行)。

we have a "Show effective Pom" 命令中,它基本上调用了提到的目标并显示了没有“冗长”的输出(不幸的是在社区版中!?)。


在其“Pom 编辑器”中有一个“有效”选项卡:

  • scrolling/cursoring这里也是“繁琐”,但我们有“满”:
  • “导航”(window) 支持
  • 文本搜索
  • 代码提示等...

(, "Graph" 视图也非常好...(和 "maven IDES(我知道的)" 中的独特功能,并且它可以无根安装;)!


更新:

所以 mojo 似乎按照记录工作:

<verbose> boolean (since:)3.2.0 Output POM input location as comments.

Default value is: false.

User property is: verbose.

为了verbose产生效果,我们需要:

<project ...>
 ...
 <build>
   <plugins>
     <artifactId>maven-help-plugin</artifactId>
     <version>3.2.0</version> <!-- or higher! -->
   </plugins>
 </build>
 ...
</project>

...分别可以(不修改pom):

mvn -Dverbose=true -Doutput=./eff.pom.xml \
  org.apache.maven.plugins:maven-help-plugin:3.2.0:effective-pom