无法找出 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
。我的尝试:
- 浏览失败模块及其所有父模块的所有插件和依赖项
pom.xml
(该模块依赖于其他模块,但是,它们都在失败模块之前成功构建)。
mvn dependency:tree -Dverbose
根本没有提到任何 reflections-maven
或 jade-plugin-common
。该命令生成超过 136k 行,因此需要将输出保存到文件中并执行全文搜索。据我所知,我很害怕 Maven 3 是这里的限制 comment.
- 使用
depgraph-maven-plugin
得到了完全相同的负面结果。
mvn dependency:analyze -DignoreNonCompile
仅提供有关工件已解决及其结束位置的信息。它并没有真正显示任何有用的东西。
[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[=11=].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[=11=].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[=11=].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.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.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
检查工件,但是,none 提到的工件也出现在我的项目中。
问题:如果我在本地仓库中没有这样的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,导航到原点几乎是不可能的。
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 行)。
在 intellij we have a "Show effective Pom" 命令中,它基本上调用了提到的目标并显示了没有“冗长”的输出(不幸的是在社区版中!?)。
netbeans 在其“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
那里执行了一个特定的 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
。我的尝试:
- 浏览失败模块及其所有父模块的所有插件和依赖项
pom.xml
(该模块依赖于其他模块,但是,它们都在失败模块之前成功构建)。 mvn dependency:tree -Dverbose
根本没有提到任何reflections-maven
或jade-plugin-common
。该命令生成超过 136k 行,因此需要将输出保存到文件中并执行全文搜索。据我所知,我很害怕 Maven 3 是这里的限制 comment.- 使用
depgraph-maven-plugin
得到了完全相同的负面结果。 mvn dependency:analyze -DignoreNonCompile
仅提供有关工件已解决及其结束位置的信息。它并没有真正显示任何有用的东西。[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[=11=].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[=11=].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[=11=].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.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.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
检查工件,但是,none 提到的工件也出现在我的项目中。
问题:如果我在本地仓库中没有这样的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,导航到原点几乎是不可能的。
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 行)。
在 intellij we have a "Show effective Pom" 命令中,它基本上调用了提到的目标并显示了没有“冗长”的输出(不幸的是在社区版中!?)。
netbeans 在其“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