Skip to content

Commit afbb5b7

Browse files
committed
[dcos update]Maven插件介绍+Maven文章推荐
1 parent 3f14551 commit afbb5b7

File tree

2 files changed

+56
-15
lines changed

2 files changed

+56
-15
lines changed

docs/books/software-quality.md

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,6 @@ Bob 大叔将自己对整洁代码的理解浓缩在了这本书中,真可谓
6868

6969
![](https://img-blog.csdnimg.cn/20210314180405396.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70)
7070

71-
**[《Effective Java 》](https://book.douban.com/subject/3360807/)**
72-
73-
![](https://img-blog.csdnimg.cn/82d510c951384383b325080428af6c0a.png)
74-
75-
**[《Effective Java 》](https://book.douban.com/subject/30412517/)** 这本书是 Java 领域国宝级别的书,非常经典。Java 程序员必看!
76-
77-
这本书主要介绍了在 Java 编程中很多极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。这篇文章能够非常实际地帮助你写出更加清晰、健壮和高效的代码。本书中的每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明。
78-
7971
## 程序员职业素养
8072

8173
**[《The Clean Coder》](https://book.douban.com/subject/26919457/)**

docs/tools/maven/maven-core-concepts.md

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,12 @@ head:
8888
**配置说明**
8989

9090
- dependencies: 一个 pom.xml 文件中只能存在一个这样的标签,是用来管理依赖的总标签。
91-
- dependency:包含在dependencies标签中,可以有多个,每一个表示项目的一个依赖。
91+
- dependency:包含在 dependencies 标签中,可以有多个,每一个表示项目的一个依赖。
9292
- groupId,artifactId,version(必要):依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven 根据坐标才能找到需要的依赖。我们在上面解释过这些元素的具体意思,这里就不重复提了。
93-
- type(可选):依赖的类型,对应于项目坐标定义的packaging。大部分情况下,该元素不必声明,其默认值是jar
93+
- type(可选):依赖的类型,对应于项目坐标定义的 packaging。大部分情况下,该元素不必声明,其默认值是 jar
9494
- scope(可选):依赖的范围,默认值是 compile。
9595
- optional(可选): 标记依赖是否可选
96-
- exclusions(可选):用来排除传递性依赖,例如jar包冲突
96+
- exclusions(可选):用来排除传递性依赖,例如 jar 包冲突
9797

9898
### 依赖范围
9999

@@ -384,23 +384,72 @@ site 生命周期的目的是建立和发布项目站点,共包含 4 个阶段
384384

385385
Maven 能够基于 `pom.xml` 所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。
386386

387-
## Maven 多模块管理
387+
## Maven 插件
388+
389+
Maven 本质上是一个插件执行框架,所有的执行过程,都是由一个一个插件独立完成的。像咱们日常使用到的 install、clean、deploy 等命令,其实底层都是一个一个的 Maven 插件。关于 Maven 的核心插件可以参考官方的这篇文档:https://maven.apache.org/plugins/index.html
390+
391+
![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/tools/maven/maven-plugins.png)
392+
393+
除了 Maven 自带的插件之外,还有一些三方提供的插件比如单测覆盖率插件 jacoco-maven-plugin、帮助开发检测代码中不合规范的地方的插件 maven-checkstyle-plugin、分析代码质量的 sonar-maven-plugin。并且,我们还可以自定义插件来满足自己的需求。
394+
395+
jacoco-maven-plugin 使用示例:
396+
397+
```xml
398+
<build>
399+
<plugins>
400+
<plugin>
401+
<groupId>org.jacoco</groupId>
402+
<artifactId>jacoco-maven-plugin</artifactId>
403+
<version>0.8.8</version>
404+
<executions>
405+
<execution>
406+
<goals>
407+
<goal>prepare-agent</goal>
408+
</goals>
409+
</execution>
410+
<execution>
411+
<id>generate-code-coverage-report</id>
412+
<phase>test</phase>
413+
<goals>
414+
<goal>report</goal>
415+
</goals>
416+
</execution>
417+
</executions>
418+
</plugin>
419+
</plugins>
420+
</build>
421+
```
422+
423+
你可以将 Maven 插件理解为一组任务的集合,用户可以通过命令行直接运行指定插件的任务,也可以将插件任务挂载到构建生命周期,随着生命周期运行。
424+
425+
Maven 插件被分为下面两种类型:
426+
427+
- **Build plugins** :在构建时执行。
428+
- **Reporting plugins**:在网站生成过程中执行。
429+
430+
## Maven 多模块管理
388431

389432
多模块管理简单地来说就是将一个项目分为多个模块,每个模块只负责单一的功能实现。直观的表现就是一个 Maven 项目中不止有一个 `pom.xml` 文件,会在不同的目录中有多个 `pom.xml` 文件,进而实现多模块管理。
390433

391434
多模块管理除了可以更加便于项目开发和管理,还有如下好处:
392435

393-
1. 降低代码之间的耦合性(从类级别的耦合提升到jar包级别的耦合);
436+
1. 降低代码之间的耦合性(从类级别的耦合提升到 jar 包级别的耦合);
394437
2. 减少重复,提升复用性;
395438
3. 每个模块都可以是自解释的(通过模块名或者模块文档);
396439
4. 模块还规范了代码边界的划分,开发者很容易通过模块确定自己所负责的内容。
397440

398-
多模块管理下,会有一个父模块,其他的都是子模块。父模块通常只有一个 `pom.xml`,没有其他内容。父模块的 `pom.xml` 一般只定义了各个依赖的版本号、包含哪些子模块以及插件有哪些。不过,要注意的是,如果依赖只在某个子项目中使用,则可以在子项目的pom.xml中直接引入,防止父pom的过于臃肿
441+
多模块管理下,会有一个父模块,其他的都是子模块。父模块通常只有一个 `pom.xml`,没有其他内容。父模块的 `pom.xml` 一般只定义了各个依赖的版本号、包含哪些子模块以及插件有哪些。不过,要注意的是,如果依赖只在某个子项目中使用,则可以在子项目的 pom.xml 中直接引入,防止父 pom 的过于臃肿
399442

400-
如下图所示,Dubbo 项目就被分成了多个子模块比如dubbo-common(公共逻辑模块)、dubbo-remoting(远程通讯模块)、dubbo-rpc(远程调用模块)。
443+
如下图所示,Dubbo 项目就被分成了多个子模块比如 dubbo-common(公共逻辑模块)、dubbo-remoting(远程通讯模块)、dubbo-rpc(远程调用模块)。
401444

402445
![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/tools/maven/dubbo-maven-multi-module.png)
403446

447+
## 文章推荐
448+
449+
- [安全同学讲 Maven 间接依赖场景的仲裁机制 - 阿里开发者 - 2022](https://mp.weixin.qq.com/s/flniMiP-eu3JSBnswfd_Ew)
450+
- [高效使用 Java 构建工具| Maven 篇 - 阿里开发者 - 2022](https://mp.weixin.qq.com/s/Wvq7t2FC58jaCh4UFJ6GGQ)
451+
- [安全同学讲 Maven 重打包的故事 - 阿里开发者 - 2022](https://mp.weixin.qq.com/s/xsJkB0onUkakrVH0wejcIg)
452+
404453
## 参考
405454

406455
- 《Maven 实战》

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy