拓展浏览
maven 包治理平台 -01-maven 入门介绍 + Maven、Gradle、Ant、Ivy、Bazel 和 SBT 的具体比照表格
maven 包治理平台 -02-windows 装置配置 + mac 装置配置
maven 包治理平台 -03-maven project maven 我的项目的创立入门
maven 包治理平台 -04-maven archetype 我的项目原型
maven 包治理平台 -05-multi module 多模块
maven 包治理平台 -06- 罕用技巧 实时更新快照 / 乱码问题 / 下载很慢 / 包依赖解决包抵触 / 如何导入本地 jar
maven 包治理平台 -07-plugins 常见插件介绍
maven 包治理平台 -08-nexus 本人搭建 maven 仓库
Maven
Apache maven 是一个软件项目管理和了解工具。
基于我的项目对象模型(POM)的概念,Maven 能够从一个核心信息管理我的项目的构建、报告和文档。
chat
具体介绍一下 maven
Maven 是一个风行的项目管理工具,次要用于 Java 我的项目的构建、依赖治理和项目管理。
它提供了一种标准化的形式来构建我的项目,使得我的项目构建过程更加自动化、简化和可保护。
以下是对于 Maven 的具体介绍:
1. 我的项目构建
Maven 提供了一种称为 POM(Project Object Model)的我的项目对象模型,它是一个 XML 文件,形容了我的项目的根本信息、依赖关系、插件配置等。通过定义 POM,Maven 可能执行我的项目的构建和治理。
2. 依赖治理
Maven 提供了弱小的依赖治理性能。通过在 POM 中申明我的项目所需的依赖,Maven 可能主动下载这些依赖,并且能够治理依赖的版本和传递性依赖。这简化了我的项目的配置和构建过程,也确保了我的项目的依赖关系的一致性。
3. 标准化的我的项目构造
Maven 激励应用一种规范的我的项目构造,这种构造使得我的项目更易于了解和保护。通常,Maven 我的项目的源代码搁置在 src/main/java
目录下,测试代码搁置在 src/test/java
目录下,资源文件搁置在 src/main/resources
和 src/test/resources
目录下等。
4. 插件零碎
Maven 应用插件来执行我的项目构建中的各种工作,如编译、测试、打包等。Maven 提供了大量的规范插件,同时也反对自定义插件以满足特定我的项目需要。
5. 生命周期和阶段
Maven 定义了一组规范的生命周期(Lifecycle),每个生命周期蕴含一系列阶段(Phase),例如 compile
、test
、package
、install
、deploy
等。通过执行不同的 Maven 命令,能够触发相应的生命周期和阶段,从而实现我的项目的构建过程。
6. 地方仓库
Maven 的地方仓库是一个存储了大量 Java 库和框架的公共仓库,开发者能够从地方仓库中获取所需的依赖。同时,Maven 还反对公有仓库,开发者能够将本人的依赖公布到公有仓库中供团队外部应用。
7. 常用命令
mvn clean
: 革除 target 目录中的构建输入。mvn compile
: 编译我的项目源代码。mvn test
: 运行我的项目的单元测试。mvn package
: 将我的项目打包成 JAR、WAR 或其余格局的归档文件。mvn install
: 将我的项目构建输入装置到本地 Maven 仓库中。mvn deploy
: 将我的项目构建输入部署到近程 Maven 仓库中。
为什么须要 maven? 以前手动治理 jar 包的形式有哪些问题?
须要 Maven 的起因有很多,次要包含以下几点:
- 依赖治理 :手动治理 jar 包可能会导致依赖凌乱、版本抵触等问题。Maven 提供了依赖治理性能,能够主动下载我的项目所需的依赖,并且可能治理依赖的版本和传递性依赖,确保我的项目的依赖关系清晰和统一。
- 我的项目构造标准化 :Maven 规定了一种规范的我的项目构造,包含源代码、资源文件、测试代码等的搁置地位。采纳这种标准化的我的项目构造,能够使我的项目更易于了解和保护。
- 自动化构建 :Maven 提供了一种自动化的我的项目构建过程,通过定义 POM 文件和执行 Maven 命令,能够主动实现编译、测试、打包等工作,进步了我的项目构建的效率和可靠性。
- 插件零碎 :Maven 的插件零碎提供了丰盛的插件,能够用于执行各种我的项目构建工作。开发者能够应用现有的规范插件,也能够编写自定义插件以满足特定需要。
- 地方仓库反对 :Maven 的地方仓库是一个蕴含了大量 Java 库和框架的公共仓库,开发者能够不便地从地方仓库获取所需的依赖。同时,Maven 也反对公有仓库,能够用于团队外部共享依赖。
手动治理 jar 包的形式存在以下一些问题:
- 依赖抵触 :手动治理 jar 包可能会导致依赖抵触,即不同的 jar 包须要应用雷同的类但版本不同,这可能会导致运行时的谬误。
- 版本控制艰难 :手动下载和治理 jar 包,须要手动解决版本控制,可能会呈现版本错乱或者脱漏的状况。
- 难以保护 :手动治理 jar 包须要开发者手动解决依赖、编译、打包等工作,减少了保护老本,而且容易呈现谬误。
- 不足标准化 :不足规范的我的项目构造和依赖治理形式,使得我的项目难以了解和保护,尤其在团队合作中更加艰难。
相似 maven 的 java 包管理工具还有哪些?
一些相似 Maven 的 Java 包管理工具:
- Gradle:Gradle 是另一个风行的我的项目构建和依赖管理工具,它采纳了基于 Groovy 的畛域特定语言(DSL)来定义构建脚本,使得构建过程更加灵便和可配置。Gradle 反对 Maven 仓库和插件,具备与 Maven 相似的性能,但更加灵便和弱小。
- Ant:Ant 是一个基于 XML 的构建工具,与 Maven 和 Gradle 相比,它更加轻量级和灵便,不过相应地也须要更多的配置和手动治理。Ant 宽泛用于晚期 Java 我的项目的构建和自动化工作。
- Ivy:Ivy 是 Apache Ant 的一个子项目,它专一于依赖治理,能够与 Ant 联合应用。与 Maven 和 Gradle 不同,Ivy 不负责我的项目的构建,而是专一于依赖的解析和治理。
- Bazel:Bazel 是 Google 开发的一个构建和测试工具,它反对多种语言,包含 Java。Bazel 的一个特点是构建后果的缓存和增量构建,可能进步构建效率和性能。
- SBT:SBT(Simple Build Tool)是 Scala 社区宽泛应用的构建工具,它反对 Scala 和 Java 我的项目的构建,采纳基于 Scala 的 DSL,具备灵便的构建配置和依赖治理性能。
Maven 和 Gradle 是目前最风行的 Java 包管理工具,它们都提供了弱小的依赖治理和我的项目构建性能,能够满足大多数 Java 我的项目的需要。
比照表格
上面是 Maven、Gradle、Ant、Ivy、Bazel 和 SBT 的具体比照表格:
个性 | Maven | Gradle | Ant | Ivy | Bazel | SBT |
---|---|---|---|---|---|---|
语言 | Java | Groovy 和 Kotlin | XML | XML | Python 和 Starlark | Scala 和 Java |
构建脚本语言 | XML | Groovy | XML | – | Starlark | Scala |
依赖治理 | 是 | 是 | 否 | 是 | 是 | 是 |
我的项目构造 | 规范化 | 可配置 | 灵便 | 灵便 | 灵便 | 灵便 |
插件零碎 | 是 | 是 | 是 | 否 | 是 | 是 |
地方仓库反对 | 是 | 是 | 否 | 否 | 是 | 是 |
生态系统 | 大 | 大 | 中 | 小 | 小 | 中 |
缓存和增量构建 | 否 | 是 | 否 | 否 | 是 | 是 |
社区活跃度 | 十分沉闷 | 十分沉闷 | 沉闷 | 沉闷 | 沉闷 | 沉闷 |
maven 最简略的入门应用例子
以下是一个 Maven 最简略的入门应用例子:
假如你有一个简略的 Java 我的项目,蕴含一个源文件 HelloWorld.java
,内容如下:
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, Maven!");
}
}
当初,你想应用 Maven 来构建这个我的项目。
- 创立我的项目目录构造:
在你抉择的地位创立一个名为 HelloMaven
的文件夹,并在其中创立以下目录构造:
HelloMaven
└── src
└── main
└── java
└── HelloWorld.java
- 创立 Maven 我的项目形容文件
pom.xml
:
在 HelloMaven
文件夹中创立一个名为 pom.xml
的文件,内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>HelloMaven</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
这个 pom.xml
文件定义了一个 Maven 我的项目,其中蕴含了我的项目的根本信息,如 groupId、artifactId 和 version。
- 构建我的项目:
关上命令行工具,进入 HelloMaven
文件夹,并执行以下 Maven 命令:
mvn compile
这个命令将编译我的项目的源代码。在胜利编译后,你能够在 HelloMaven/target/classes
目录下找到编译后的 .class
文件。
- 运行我的项目:
持续在命令行工具中执行以下 Maven 命令:
mvn exec:java -Dexec.mainClass="HelloWorld"
这个命令将运行 HelloWorld
类中的 main
办法,输入 “Hello, Maven!”。
通过这个例子,你能够看到 Maven 是如何简化我的项目构建和治理的。
本文由博客一文多发平台 OpenWrite 公布!