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)