gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 05:50:10 58 4
gpt4 key购买 nike

那里执行了一个特定的 Maven 插件,我很难找出它的来源以删除或替换它,因为它的编译依赖链接已损坏。我说的是依赖于 org.reflections:reflections-maven:0.9.8org.jfrog.jade.plugins.common:jade-plugin-common:1.3.8,当链接重定向到 OpenMind 位置并导致 404 ( link ) 时,Maven 无法从中央存储库下载它。

与其在项目结构中包含这样的 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。我的尝试:

  • 浏览失败模块及其所有父模块的所有插件和依赖项 pom.xml(该模块依赖于其他模块,但是,它们都在失败模块之前成功构建)。<
  • mvn dependency:tree -Dverbose 根本没有提及任何 reflections-mavenjade-plugin-common。该命令生成超过 136k 行,因此需要将输出保存到文件中并执行全文搜索。据我从这个 comment 中了解到,我很害怕 Maven 3 是这里的限制。
  • 使用 depgraph-maven-plugin 得到了完全相同的负面结果。
  • mvn dependency:analyze -DignoreNonCompile 仅提供 Artifact 已解析及其结束位置的信息。它并没有真正显示任何有用的东西。
    [INFO] --- reflections-maven:0.9.5:reflections (default) @ my-module ---
    [IJ]-1-ARTIFACT_RESOLVING-[IJ]-path=-[IJ]-artifactCoord=org.reflections:reflections-maven:pom:0.9.5-[IJ]-error=
    [IJ]-1-ARTIFACT_RESOLVED-[IJ]-path=C:\Users\user\.m2\repository\org\reflections\reflections-maven\0.9.5\reflections-maven-0.9.5.pom-[IJ]-artifactCoord=org.reflections:reflections-maven:pom:0.9.5-[IJ]-error=
    [IJ]-1-ARTIFACT_RESOLVING-[IJ]-path=-[IJ]-artifactCoord=org.reflections:reflections-maven:jar:0.9.5-[IJ]-error=
    [IJ]-1-ARTIFACT_RESOLVED-[IJ]-path=C:\Users\user\.m2\repository\org\reflections\reflections-maven\0.9.5\reflections-maven-0.9.5.jar-[IJ]-artifactCoord=org.reflections:reflections-maven:jar:0.9.5-[IJ]-error=
    [IJ]-1-ARTIFACT_RESOLVING-[IJ]-path=-[IJ]-artifactCoord=org.reflections:reflections:jar:0.9.5-[IJ]-error=
    [IJ]-1-ARTIFACT_RESOLVED-[IJ]-path=C:\Users\user\.m2\repository\org\reflections\reflections\0.9.5\reflections-0.9.5.jar-[IJ]-artifactCoord=org.reflections:reflections:jar:0.9.5-[IJ]-error=
    [IJ]-1-ARTIFACT_RESOLVING-[IJ]-path=-[IJ]-artifactCoord=com.google.guava:guava:jar:r08-[IJ]-error=
    [IJ]-1-ARTIFACT_RESOLVED-[IJ]-path=C:\Users\user\.m2\repository\com\google\guava\guava\r08\guava-r08.jar-[IJ]-artifactCoord=com.google.guava:guava:jar:r08-[IJ]-error=
    ...
    [IJ]-1-ARTIFACT_RESOLVING-[IJ]-path=-[IJ]-artifactCoord=org.jfrog.maven.annomojo:maven-plugin-anno:jar:1.4.0-[IJ]-error=
    [IJ]-1-ARTIFACT_RESOLVED-[IJ]-path=C:\Users\user\.m2\repository\org\jfrog\maven\annomojo\maven-plugin-anno\1.4.0\maven-plugin-anno-1.4.0.jar-[IJ]-artifactCoord=org.jfrog.maven.annomojo:maven-plugin-anno:jar:1.4.0-[IJ]-error=
    [IJ]-1-ARTIFACT_RESOLVING-[IJ]-path=-[IJ]-artifactCoord=org.jfrog.jade.plugins.common:jade-plugin-common:jar:1.3.8-[IJ]-error=
    [IJ]-1-ARTIFACT_RESOLVED-[IJ]-path=C:\Users\user\.m2\repository\org\jfrog\jade\plugins\common\jade-plugin-common\1.3.8\jade-plugin-common-1.3.8.jar-[IJ]-artifactCoord=org.jfrog.jade.plugins.common:jade-plugin-common:jar:1.3.8-[IJ]-error=
    ...
  • 使用 here 中的 reflections-maven 检查 Artifact ,但是,我的项目中也没有提到的 Artifact 。

问题:如果我在本地存储库中没有这样的 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 插件的相同输出,没有关于其来源的附加信息。由于文件很大,我附上截图:

enter image description here

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


解决方案 2:

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

enter image description here

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

最佳答案

Help:Effective-Pom :

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

我们可以分析我们的“有效 pom”(Pom#inheritancePom#super-Pom)。

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

“除其他外”,它允许我们定位/覆盖任何继承的插件/依赖项/“pom 元素”。

不幸的是,输出生成:

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

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


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

  • 滚动/光标在这里也很“麻烦”,但我们有“完整”:
  • “导航”(窗口)支持
  • 文本搜索
  • 代码提示等...

(,“图形” View 也非常好...(和“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

关于java - 无法找出 reflections-maven 插件的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70552208/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com