【问题标题】:Couldn't understand what Maven is all about, looking at the formal definitions无法理解 Maven 的全部内容,查看正式定义
【发布时间】:2011-07-11 21:27:36
【问题描述】:

我是 Java 的初学者,最近尝试使用一些现有的库,突然 Maven 出现在两者之间。我不知道阅读 Apache 网站上的项目页面,了解 maven 的全部内容。

它有什么要求?我正在使用一些库,它要求我安装 Maven 和一些进一步的步骤,但我不知道它的用途。我看到的一些地方是用于自动化构建过程,但我也可以通过 NetBeans 轻松做到这一点。

任何简单的解释都将受到高度赞赏。

编辑:非常感谢大家!

还请澄清,如果我使用的库包含 .pom 文件,这对我意味着什么。我正在使用一些库构建一个 Web 应用程序,其中大部分都包含 .pom 文件。它告诉我该怎么做?它会强迫我使用 Maven 吗?

【问题讨论】:

标签: java maven-2 maven


【解决方案1】:

Maven 是一个自以为是的构建工具和依赖管理系统。

  • 构建工具:它处理将您的.java 文件转换为.class 文件的过程,可能会转换您的资源并将所有内容打包到.jar.war.ear.tar.gz.zip 文件。在这方面它类似于Apache Ant
  • 依赖管理:它处理依赖:它下载所需的库,确保也下载传递依赖(即依赖的依赖),处理依赖中的冲突版本号(通常通过尝试找到适合的库所有要求)。在这方面它类似于Apache Ivy
  • opinionated:它带有一些默认配置,用于指定项目的布局和构建过程。虽然它可以被广泛定制,但这种定制可能变得很难做到。通常,遵循建议的默认设置会使使用 Maven 变得更容易。

maven 中的一个关键概念是 POM,它包含 Maven 所知道的关于您的项目的所有信息。它位于pom.xml 文件中。该文件也是项目使用 Maven 的最佳指示。

【讨论】:

  • 如果我正在使用的库包含 .pom 文件,是否会强制我使用 maven?
  • 不,使用 Maven 生成的库(通常)是简单的 .jar 文件,您可以像使用其他任何文件一样使用它们。使用 Maven 只会帮助您更轻松地管理这些依赖项,但如果您想避免(不太低)学习和使用 Maven 的成本,那么您现在可以忽略它。
  • @Rajendra Vellisetti,不,虽然我使用 Java 和 Maven 已经有几年了,只是因为库有一个 POM(如果我没记错的话,项目对象模型)文件没有' t 意味着你必须使用 Maven。我假设这仍然是正确的,如果您希望使用 ANT,Maven 可以为您生成一个 build.xml。 Maven 的一个目标是任何熟悉 Maven 的人都可以走到一个使用 Maven 的未知项目并立即构建该项目并了解源代码的布局。
【解决方案2】:

Maven 类似于Ant:它是一个帮助您自动编译、打包和部署应用程序的工具。

由于大多数 Java 应用程序都依赖于 3rd 方 JAR,它也类似于 Ivy,因为它管理从一个中心位置获取 JAR 依赖项,包括您的 JAR 和它们所依赖的任何 JAR。

就我个人而言,我觉得 Maven 很沉重而且难以理解。我不喜欢它为我的项目要求特定目录布局的方式。据我所知,偏离他们的标准会破坏 Maven。

我一直认为 Ant 轻巧、易于理解和快速运行。我建议在处理 Maven 之前先尝试 Ant 并摸索它。即使你不能吞下 Maven,你也会有一个工作参考点,它会很好地为你服务。

【讨论】:

  • 如果我正在使用的库包含 .pom 文件,是否会强制我使用 maven?
  • 不,它是可选的,但如果您选择不使用 Maven,您只能靠自己。您必须获取所有第 3 方依赖项、编译和打包。
【解决方案3】:

补充@Jigar Jishi的回答:

我一直对 Maven 概念稍加关注,据我了解,它是用于有效构建和打包管理的一整套工具。它利用基于 XML 的文件(在这个意义上类似于 ANT)来跟踪事物。

Maven 在这里是一个热门话题,我猜在其他地方的软件开发人员中,有些爱好者会向每一个相关的问题推荐 Maven,而有些仇恨者会一有机会就攻击 Maven。我的观点介于两者之间,我发现 Maven 对我的项目来说过于复杂和令人费解,因此觉得花时间和精力学习是不值得的。

如果它对您的项目绝对至关重要,那么我会说试一试,但不要半途而废。很可能需要花费大量时间和精力才能把事情做好。但如果你做到了,你最终可能会很高兴.. :)

【讨论】:

  • ohh...okk...所以现在我明白了它比我想象的还要大。它需要长期学习。! :)
  • @Rajendra Vellisetti,我建议您使用支持 Maven 的 IDE,例如 netbeans、eclipse 或 intellij。通过这种方式 IDE 管理 maven 文件,您只需了解很少的知识就可以开始使用它,因为 IDE 几乎可以为您完成所有工作。
  • @Rajendra:恐怕情况似乎如此,尤其是如果您像我一样不习惯以非常系统的方式开发软件。 @Peter:虽然 Eclipse 和我认为其他 IDE 在处理连接方面做得不错,但它仍然不是很直接/直观,而且事情确实变得复杂。我不想在这里猜测或批评您的意见,但我真的不明白初学者如何在不了解构建、打包、依赖项等细节的情况下开始使用 Maven。
【解决方案4】:

Maven 是一个构建工具(简单来说,它可以将您的应用打包成一些构建,例如(.jar、.war、.ear)。

但它不仅仅是构建工具,它支持模块化、传递依赖的东西和many more..

【讨论】:

    【解决方案5】:

    我建议您查看 Sonatype 网站 (here)。

    这家公司与 Maven 世界有很大关系;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 2015-04-28
      • 1970-01-01
      相关资源
      最近更新 更多