【问题标题】:Best "General Purpose" Maven plugins [closed]最佳“通用”Maven 插件 [关闭]
【发布时间】:2011-02-06 16:00:33
【问题描述】:

我们刚刚迁移到 Maven,我知道世界上有很多不同的插件和扩展。对于一般用途,您推荐哪些最好的?

(请在每个答案的插件上)

【问题讨论】:

  • 我不明白这个问题的意义。插件不适用于“一般用途”。他们要执行特定的任务,而他们执行的任务在大多数情况下是不言而喻的。
  • 这个问题至少应该是CW,这是一个民意调查(但我认为这不是一个适合SO的问题)。
  • 或许应该改名为“最实用的 Maven 插件”。一些提到的插件,如:“帮助”、“依赖”和“版本”当然符合该标准。
  • 这是一个很好的问题。有这么多的 Maven 插件,坦率地说,它是压倒性的。他们中的许多人的名字也可能意味着任何东西(例如 maven-assembly-plugin)。
  • 我也觉得,这个问题增加了价值。可能有一些我不知道的插件,因此找到其他方法(通常通过编码)来克服它。如果人们分享可用的最佳插件,它将服务于 SO 目的。

标签: java maven-2 plugins


【解决方案1】:

我发现这些插件在我的日常工作中最有用:

  • surefire - 用于单元测试
  • dependency - 用于模块依赖分析
  • cobertura - 用于单元测试覆盖率分析
  • liquibase - 用于运行数据库迁移
  • assembly - 用于创建包含应用程序所有必需依赖项的单个可执行 jars

当然还有更多探索,很大程度上取决于您的项目需求。当然,我使用的最有用的插件之一是我自己为某些特定需求编写的插件。这是 maven 最有价值的特性之一 - 能够轻松扩展它。

【讨论】:

  • 请每个答案一个插件。
  • 你有没有尝试过扩展一个 maven 插件?
【解决方案2】:

Maven Versions Plugin,对于检查和管理 POM 和依赖项的版本非常有用:

  • versions:display-dependency-updates - 扫描项目的依赖关系并生成具有更新版本可用的依赖关系的报告。
  • versions:display-plugin-updates - 扫描项目的插件并生成那些有更新版本可用插件的报告。
  • versions:update-child-modules - 更新项目子模块的父部分,使版本与当前项目的版本匹配。例如,如果您有一个聚合器 pom,它也是它聚合的项目的父级,并且子级和父级版本不同步,则此 mojo 可以帮助修复子模块的版本。 (请注意,如果您的项目因版本不匹配而严重损坏以至于无法构建,您可能需要使用 -N 选项调用 Maven 才能运行此目标。
  • versions:set - 可用于从命令行设置项目版本。

【讨论】:

    【解决方案3】:

    maven jetty 插件非常棒,它有助于使 Web 应用程序开发更加容易。您可以简单地执行以下操作,而不是打包您的应用程序:

    mvn jetty:run
    

    然后您的应用程序启动。

    【讨论】:

    • 是的,这是我遇到的所有插件中最好的。
    【解决方案4】:

    Maven Dependency Plugin 是另一个强制插件,用于调试/清理/理解 POM 以及如何获得一些依赖项(传递性):

    • dependency:analyze - 分析此项目的依赖关系,确定哪些是:已使用和已声明;使用和未声明;未使用并已声明。
    • dependency:tree - 显示此项目的依赖关系树。

    【讨论】:

    • 我以为我对 Maven 了解很多,但从未听说过分析功能……太棒了……谢谢。
    • @HDave 不客气。很高兴你喜欢它。
    【解决方案5】:

    Maven Enforcer Plugin 允许控制所有插件具有指定版本或某些环境约束,例如 Maven 版本、JDK 版本和操作系统系列以及更多标准规则和用户创建的规则。

    【讨论】:

      【解决方案6】:

      Maven Help Plugin 是调试 POM 所必需的:

      • help:effective-pom - 显示有效的 POM
      • help:active-profiles - 列出当前用于构建的配置文件。
      • help:evaluate - 评估 maven 表达式

      【讨论】:

        【解决方案7】:

        Maven FindBugs Plugin 是您需要用于静态代码分析的东西。检测开发人员测试未涵盖的错误非常有用。

        【讨论】:

        • 我更喜欢将 FindBugs 作为 Eclipse 插件运行 - 在方便的 UI 中提供即时反馈。
        【解决方案8】:

        Maven Cargo Plugin 启动和停止您的 Web 容器。您还可以使用它将 Web 应用程序部署到正在运行的容器中。我们将其用于 Web 应用程序的集成和功能测试。

        【讨论】:

          【解决方案9】:

          exec-maven-plugin 对于运行已知插件未涵盖的任务非常有用。

          它有两个目标,第一个“exec”允许您运行任何可执行文件,就好像您在任何阶段从命令行运行它一样。第二个目标“java”允许您运行任何 java 类。

          当我不得不添加一个由 CUP 生成的 Parser 类时,这是一个救命稻草。没有 CUP maven 插件,但 exec 允许我执行 CUP 的主要 java 类来生成我的解析器。

          我可以想到任何数量的用途;但是很难找到;它的存在应该贴在 maven 文档的首页。

          【讨论】:

            【解决方案10】:

            请原谅本书插件,但这比重复每个插件更容易:)

            这里已经介绍了一些,但这包括更多。

            【讨论】:

            • 更简单,但用处不大(因为人们无法对单个插件进行投票)。
            • 您必须登录才能查看内容。 :-(
            • 这篇文章包括插件列表,以及不需要注册的 PDF 链接:brettporter.wordpress.com/2009/09/30/…
            • 没记录就看到了,可能时代变了
            【解决方案11】:

            The GMaven plugin 让您可以在生命周期中嵌入 groovy 代码。

            它让你execute Groovy code 来自

            1. an inline code snippet 在你的 pom 中或
            2. source files in your project
            3. remote source files

            还有Simplifies the Creation of Groovy-based Maven Plugins

            【讨论】:

              【解决方案12】:

              通常,一个插件有一个特定的用途,即您将使用的插件取决于您想做的事情。例如,如果您想指定源版本,请使用maven-compiler-pluginmaven-javadoc-plugin 来生成javadocs。其他插件可能会在运行您的集成测试之前启动一个码头,并且有些插件可以将您的二进制版本部署到您的应用程序服务器等。

              有关一般概述,请访问Maven - Available PluginsMaven Central Repository 的插件目录。 Codehaus 的Mojo project 也有许多插件。对应的仓库可以在here找到。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-10-04
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-09-23
                • 2015-10-20
                • 2016-05-22
                • 1970-01-01
                相关资源
                最近更新 更多