Skip to content

Commit

Permalink
2023.7.29.16:33
Browse files Browse the repository at this point in the history
  • Loading branch information
_Wh0ami authored and _Wh0ami committed Jul 29, 2023
1 parent 695386a commit a45ce3c
Show file tree
Hide file tree
Showing 5 changed files with 601 additions and 57 deletions.
294 changes: 283 additions & 11 deletions _posts/2023-01-07-Maven.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Maven是一个项目管理工具,可以对Java项目进行自动化的构建

项目构建:提供标准的,跨平台的自动化构建项目的方式

依赖管理:方便快捷的管理项目依赖的资源(jar包) ,避免资源间的版本冲突等问题
依赖管理:方便快捷的管理项目依赖的资源jar包,避免资源间的版本冲突等问题

统一开发结构:提供标准的,统一的项目开发结构,如图

Expand All @@ -33,11 +33,9 @@ https://maven.apache.org/download.cgi

# 3. Maven仓库

官网:https://mvnrepository.com/
https://mvnrepository.com/

运行Maven的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。

如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库。
运行Maven的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库。

## 3.1. 本地仓库

Expand All @@ -60,15 +58,37 @@ maven默认连接的远程仓库位置并不在国内,下载速度非常慢,
</mirror>
```

# 4. 在idea中配置maven
# 4. 在IDEA中配置maven

打开settings,搜索maven即可

# 5. Maven打包jar
# 5. Maven指令

使用公司搭建的maven库,先清空之前仓库中的maven依赖 `mvn clean install`(在maven项目的路径下执行)

# 6. Maven插件

maven-compiler-plugin: 用于编译 Java 代码。

maven-surefire-plugin: 用于运行单元测试。

maven-jar-plugin: 用于打包 JAR 文件。

maven-war-plugin: 用于打包 WAR 文件。

`mvn clean package`
maven-install-plugin: 用于将项目安装到本地 Maven 仓库中。

# 6. nexus仓库管理器
maven-deploy-plugin: 用于将项目部署到远程 Maven 仓库中。

maven-release-plugin: 用于发布项目的正式版本。

maven-site-plugin: 用于生成项目文档网站。

maven-dependency-plugin: 用于管理项目的依赖项。

maven-clean-plugin: 用于清理项目的目录。

# 7. nexus仓库管理器

nexus 做 maven仓库管理器,代理远程仓库及部署第三方构件
```xml
Expand All @@ -87,7 +107,259 @@ nexus 做 maven仓库管理器,代理远程仓库及部署第三方构件
</servers>
```

# 7. 常用命令
# 8. pom.xml文件

pom.xml文件是Maven 项目管理工具中使用的项目对象模型(Project Object Model)文件,通常简称为 POM 文件。它是 Maven 项目的核心文件之一,用于描述项目的基本信息、依赖关系、构建选项、插件配置等。

在 Maven 中,每个项目都应该包含一个 POM 文件,以便 Maven 能够正确地构建该项目。POM 文件通常位于项目的根目录下,文件名为 pom.xml。

POM 文件由 XML 编写,其中包含了一些元素和属性,用于描述项目的各个方面。例如,POM 文件中通常包含以下信息:

项目的坐标(groupId、artifactId、version)、依赖关系、构建选项和插件配置、开发者信息、许可证信息等。通过这些信息,Maven 可以自动下载依赖项、编译代码、运行测试、打包构建结果等

## 8.1. 标签

-------------------------------

`<project>` 标签: pom.xml 文件的根元素,它包含了整个项目的配置信息。

`<modelVersion>` 标签: 指定 POM 文件所使用的项目对象模型(Project Object Model)的版本号。在当前版本的 Maven 中,POM 模型的版本号为 4.0.0。

`<parent>` 标签: 指定当前项目的父项目,它通常用于继承父项目的配置和依赖项。

`<groupId>` 标签: 指定项目的组 ID,通常使用倒置的域名(例如 com.example)。

`<artifactId>` 标签: 指定项目的 artifact ID,通常是项目名称的小写形式(例如 my-project)。

`<version>` 标签: 指定项目的版本号,通常使用 Semantic Versioning 规范(例如 1.0.0)。

`<name>` 标签: 指定项目的人类可读名称。

使用公司搭建的maven库,先清空之前仓库中的maven依赖 `mvn clean install`(在maven项目的路径下)
`<description>` 标签: 指定项目的描述信息,通常是一个简短的描述,用于描述项目的目的和功能。

`<packaging>` 标签: 指定项目的打包类型,通常是 jar 或 war、pom

`<properties>` 标签: 指定项目的属性,可以在项目中通过 ${propertyName} 的形式来引用这些属性。

-------------------------------

`<dependencyManagement>` 标签用于统一管理项目的依赖版本号和依赖范围,避免版本冲突。它可以让子模块继承父模块的依赖信息。这个标签通常被放在父项目的 pom.xml 文件中,子项目可以通过继承父项目的 pom.xml 文件来继承父项目的 `<dependencyManagement>` 标签中定义的依赖版本号和依赖范围。

`<dependencies>` 标签用于指定项目的依赖列表,其中每个依赖项都是通过一个 `<dependency>` 标签来定义的。这个标签通常被放在项目的 pom.xml 文件中,用于声明项目的依赖,以便 Maven 能够自动下载所需的依赖并将其添加到项目构建路径中。

`<dependency>` 标签用于定义一个具体的依赖项,包括依赖的组织、名称、版本号、依赖范围等信息。这个标签通常被定义在 `<dependencies>` 标签内部,用于声明项目的具体依赖。

`<dependency>` 标签中的 `<scope>` 元素: 指定依赖项的作用域,例如 compile、test、provided 等。

`<exclusions>` 标签: 在依赖项中排除一些不需要的传递性依赖项。

`<exclusion>` 标签用于排除传递性依赖中的某些依赖项。在 Maven 项目中,一个依赖项可能会依赖其他的依赖项,这些依赖项被称为传递性依赖。

-------------------------------
`<modules>` 标签: 指定项目的模块,通常用于多模块项目中,每个模块都用一个 `<module>` 标签来描述。

-------------------------------
`<build>` 标签: 指定项目的构建选项。其中包括源代码目录、资源目录、构建插件等信息。

`<plugins>` 标签: 指定项目所使用的 Maven 插件。每个插件都用 `<plugin>` 标签来描述,其中包括插件的组 ID、artifact ID 和版本号等信息。

-------------------------------
`<distributionManagement>` 标签用于指定项目的发布配置信息,包括发布到哪个仓库、以何种方式发布。包含两个子元素 `<repository>``<snapshotRepository>`,分别用于配置正式版本和快照版本的发布仓库信息。

-------------------------------

`<repositories>` 标签: 指定项目所使用的远程仓库。每个远程仓库都用

`<repository>` 标签来描述,其中包括仓库的 URL 和 ID 等信息。

`<repository>` 标签中的 `<snapshots>` 元素: 指定是否从远程仓库下载快照版本的依赖项。

-------------------------------

`<pluginRepositories>` 标签指定项目中使用的插件仓库

-------------------------------
`<profiles>` 标签: 指定项目的配置文件。每个配置文件都用 `<profile>` 标签来描述,其中包括配置文件的 ID、激活条件等信息。


标准模板

```xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

<!-- POM 模型的版本号 -->
<modelVersion>4.0.0</modelVersion>

<!-- 指定当前项目的父项目,用于自动继承父项目的依赖项、插件、资源等配置信息-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.14</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<groupId>com.yatoil</groupId>
<artifactId>yt-dorm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 设置 pom,代表打包类型为 pom --> <packaging>pom</packaging>

<description>yt-dorm project for Spring Boot</description>

<!-- 指定项目的属性,可以在项目中通过 ${propertyName} 的形式来引用这些属性 -->
<properties>
<yt-dorm.version>1.0</yt-dorm.version>
<swagger.version>2.9.2</swagger.version>
<jwt.version>0.9.1</jwt.version>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<dependencyManagement>
<dependencies>

<!-- Swagger2 -->
<dependency>
<groupId> io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
<!-- 排除传递性依赖
<exclusions> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> </exclusion> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> </exclusion> </exclusions> --> </dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>

<!-- jjwt生成token -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jwt.version}</version>
</dependency>

<!-- web服务入口 -->
<dependency>
<groupId>com.yatoil</groupId>
<artifactId>dorm-admin</artifactId>
<version>${yt-dorm.version}</version>
</dependency>

<!-- 通用工具模块 -->
<dependency>
<groupId>com.yatoil</groupId>
<artifactId>dorm-common</artifactId>
<version>${yt-dorm.version}</version>
</dependency>

<!-- 宿舍管理模块 -->
<dependency>
<groupId>com.yatoil</groupId>
<artifactId>dorm-dormitory</artifactId>
<version>${yt-dorm.version}</version>
</dependency>

</dependencies>
</dependencyManagement>


<!-- 指定项目的子模块 -->
<modules>
<module>dorm-admin</module>
<module>dorm-common</module>
<module>dorm-dormitory</module>
</modules>

<!-- 指定项目的构建选项。源代码目录、资源目录、构建插件等信息 -->
<build>
<!-- 指定项目所使用的 Maven 插件 -->
<plugins>
<!-- 插件功能:用于编译项目源码并生成对应的字节码文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>

<!-- 指定了项目的发布配置信息,包括发布到哪个仓库、以何种方式发布 -->
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://library.yatoil.com:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://library.yatoil.com:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>

<!-- 指定项目所使用的远程仓库 -->
<repositories>

<!-- 公司内部仓库 -->
<repository>
<id>nexus</id>
<name>Nexus Repository</name>
<url>http://library.yatoil.com:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>

<!-- 阿里云仓库 -->
<repository>
<id>aliyun-repos</id>
<name>Aliyun Repository</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

<!-- 指定项目中使用的插件仓库 -->
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus Plugin Repository</name>
<url>http://library.yatoil.com:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>

<pluginRepository>
<id>aliyun-repos</id>
<name>Aliyun Repository</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>

</project>

1 change: 1 addition & 0 deletions _posts/2023-01-12-IDEA使用.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ sout + 回车

| 快捷键 | 介绍 |
| --------------------------- | ------------------------------------------------------------ |
| Ctrl + `/` | 生成注释 |
| Ctrl + Y | 删除整行 |
| Ctrl + Z 、Ctrl + Shift + Z | 后悔药,撤销、取消撤销 |
| Alt + enter | IntelliJ IDEA 根据光标所在问题,提供快速修复选择,光标放在的位置不同提示的结果也不同 |
Expand Down
Loading

0 comments on commit a45ce3c

Please sign in to comment.