【问题标题】:Execute a goal from commandline in all submodules在所有子模块中从命令行执行目标
【发布时间】:2023-03-28 04:31:01
【问题描述】:

这是来自多模块父 pom 的 sn-p。如何在项目的所有子模块中运行目标?


<modules>
    <module>../utp</module>
    <module>../testdependency</module>
</modules>

当我尝试通过mvn -am -pl utp help:evaluate -Dexpression=project.artifactId 运行这个目标时,我只会得到父 pom 的结果,我没有得到任何 utp 和最终依赖项的结果。
如何在项目的所有子模块上运行目标?

【问题讨论】:

    标签: maven maven-2


    【解决方案1】:

    根据documentation,我们可以使用help:evaluate评估一些Maven表达式。

    这以交互方式工作或将artifact 和expression 作为参数。如果在项目 pom 上运行,它会报告项目的结果,如果在没有 pom 的情况下运行,则报告 artifact。

    这并不意味着提供所有依赖项的工件详细信息。

    不确定您的要求是什么...如果要获取各种依赖项详细信息,您可以尝试maven dependency plugin 的目标之一,例如mvn dependency:list 或mvn dependency:tree。如果要知道依赖项的版本是否是最新的,您可以在versions maven plugin 中尝试一个目标,例如mvn display-dependency-updates。

    编辑:

    在 parent pom 的 &lt;pluginManagement> 部分中定义的插件仅在声明了 &lt;plugins&gt; 的那些模块中运行。在其他模块中,它们不运行。或许mvn help:effective-pom 可以提供一些信息。

    【讨论】:

    • 基本上,我想知道,maven 插件的哪些目标为每个模块运行一次,哪些只运行一次。例如,有exec-maven-plugin,当我执行它是exec 目标时,它将在每个模块中运行一次,另一方面,如果我创建一些可执行的java 类并运行java 目标,我不能说服 maven 在每个模块中运行,它只在父模块中运行一次。所以我想知道,如何控制它。
    • @coubeatczech。更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 2019-03-28
    • 2020-09-24
    • 2020-09-17
    • 1970-01-01
    相关资源
    最近更新 更多