【发布时间】:2016-01-17 07:15:06
【问题描述】:
关于如何在 Android 中使用 Maven 并使用它有很多答案。
但是,由于 Gradle 已经可用,它管理 Android 项目的构建过程并支持创建 Android 应用程序的复杂场景,例如 Multi-distribution 和 Multi-apk,
Maven 在 Android Studio 中的具体作用是什么?
它与 Gradle 有什么不同?
【问题讨论】:
关于如何在 Android 中使用 Maven 并使用它有很多答案。
但是,由于 Gradle 已经可用,它管理 Android 项目的构建过程并支持创建 Android 应用程序的复杂场景,例如 Multi-distribution 和 Multi-apk,
Maven 在 Android Studio 中的具体作用是什么?
它与 Gradle 有什么不同?
【问题讨论】:
简短的回答是:这些工具做同样的事情,但方式不同。不同之处在于您如何使用它们来构建您的项目。 Apache Maven 采用“遵循我们的约定”的方式,而 Gradle 为您提供了灵活性。一些开发人员不想要新工具,或者没有时间学习如何正确使用它。
现在是长答案...
要正确理解为什么某些开发人员会依赖 Apache Maven,我们必须回顾过去几年。
Apache Maven 是一个类似于Gradle 的构建自动化工具。
Maven 于 2004 年发布。Gradle 第一个版本于 2007 年发布,但在早期并没有像 Maven 那样流行。
一些开发人员不喜欢学习任何新东西,大多数公司也不想冒险用已经运行和掌握的工具 (Maven) 来换取新来的孩子。
随着 Android 开发的兴起,Gradle 变得流行起来。 Android 的项目与 Java EE/Web 项目的项目结构不同。尝试在 Android 的项目上使用 Maven 感觉不自然,该工具没有准备好提供灵活性。
到目前为止,如果您已经了解强制约定,那么 Apache Maven 可以用于简单的 Java EE 项目,而不会感到麻烦。因此,不了解 Gradle/没有接触过 Android 应用程序的开发人员没有动力改用其他工具。
在我看来,Gradle 在你能想象到的各个方面都比Apache Maven 好。它为您提供灵活性并尽量不妨碍您,这是您在Apache Maven 中找不到的“功能”。如果您不遵循 Apache Maven 生命周期,您的构建将失败,仅此而已。
例如,如果您使用Gradle,您的代码可以以任何布局分布在多个目录中。如果您在Maven 上并且您不遵循“约定”,您将失去一些时间来更改您的 pom(Maven 的构建文件)以便能够理解和处理您的文件夹结构。
例如:Java 源代码必须位于 src/main/java 文件夹中。如果你有一个旧项目并且结构是src/java,对不起,你不能保证所有的 Maven 插件都会按预期运行。
Gradle 帮了我们一个忙,并将更多功能放在一个非常有条理的图表中进行比较。看一看。 https://gradle.org/maven_vs_gradle/
【讨论】:
Maven 只是一个管理和简化项目构建方式的工具。在许多其他事情(运行测试、管理冲突、文档、模块化)中,它最有用的目的是自动获取项目所需的依赖项以及这些依赖项的依赖项(传递依赖项)(如果有)。依赖项通常只是包含可重用代码的 JAR 文件。
那么这是什么意思。假设您想使用诸如OpenCSV 之类的库在您的应用程序中生成CSV 文件。非 Maven 方式:谷歌搜索库,检查它是否需要其他库,如果需要下载它们,将它们放在项目的类路径中然后构建。当您将项目移动到另一台 PC 时,请复制所有 JAR,否则将无法正常工作。 Maven方式:在名为pom.xml的文件中插入类似这样的东西:
<dependency>
<groupId>net.sf.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>2.3</version>
</dependency>
完成。 Maven 将在您构建时为您完成其余的工作(如果不存在,则下载到本地缓存,获取依赖项,javadoc 等)。即使您要将项目复制到没有 JAR 的另一台 PC,删除 JAR's 等,如果存在 Maven,它会在您构建时自动重新下载它们。
更多:Link
【讨论】: