Maven仓库从0到1

100 阅读2分钟

Maven仓库从0到1

前沿

我们现在常用管理包的就是maven,快速过一下maven的常见语法,为接下来的一些学习打下基础

简单说一下我对maven的理解,其实这是一个jar包的统一管理平台(ANT这个是之前的,这个算是升级)

用pom去配置

IDEA初步配置

maven官网

IDEA一般会自带,如果需要修改看下面

DIY配置

  1. 下载(在maven官网,直接点击上面的就可以链接就可以),然后本地解压

image-20220822150825100.png

2.idea配置

image-20220822152200112.png

如果没有找到相应的.m2 可以使用mvn help:system。这样会自动创建一个.m2

仓库

其实maven仓库存放的是jar包的坐标,然后通过坐标去加载对应的jar包,所以说每个jar包就会对应一个唯一的坐标

本地仓库

就是自己主机上的一些jar包仓库

远程仓库

不在本地的仓库都是远程的

中央仓库地址

或者还有自己公司内部的局域网自己的仓库

配置本地仓库

在配置文件中配置:上面的settings.xml

1.这里配置本地仓库的地址,默认就好

image-20220822154431574.png

2.还可以配置镜像,更好的下载,这里用阿里的镜像,在mirrors中配置,改成阿里云的镜像

<mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
    <!-- ali mirror -->
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    <!-- default
    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>
      <blocked>true</blocked>
    </mirror>
    -->
  </mirrors>

maven的工程类型

  1. pom工程

可以用于版本管理,父子逻辑,这个可以实现底下的两个工程

2.jar工程

打包成jar

3.war工程

打包成war

maven的一些功能

idea创建maven

image-20220822162519167.png

image-20220822162651799.png

image-20220822163016020.png

标签

依赖标签
<dependencies>
  <dependency>
    <groupId>com.duncan</groupId> 其他项目的坐标
    <artifactId>mvn_learn</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>
      compile    编译和运行的时候会加载
      provided   只在编译和测试中加载
      runtime    运行时生效
      system     配置系统的指定的依赖
      test       只是测试的时候生效
      import     必须使用父工程的版本
    </scope>
  </dependency>
</dependencies>
​
​
自定义属性值
<properties>
  <name>value</name>
</properties>
​
​
 版本管理,不会加载jar
<dependencyManagement>
 <dependencies>
     <dependency>
       <groupId>com.duncan</groupId>
       <artifactId>mvn_learn</artifactId>
       <version>${name}</version>   上面属性定义的
     </dependency>
   </dependencies>
</dependencyManagement>
​
模块的聚合
<modules>
    <module>project2</module>
</modules>
​
​
继承的包,里面的依赖可以直接使用
<parent>
  <artifactId>mvn_learn</artifactId>
  <groupId>com.duncan</groupId>
  <version>1.0-SNAPSHOT</version>
</parent>

build

在pom文件中配置当前项目的插件

<build>
  自定义资源拷贝
  <resources>
    <resource>
      <directory>src/main</directory>
      <includes>
        <include>
          *.xml
        </include>
      </includes>
    </resource>
  </resources>
  
​
  自定义插件
  <plugins>
    <plugin>
      <artifactId>mvn_learn</artifactId>
      <groupId>com.duncan</groupId>
      <version>1.0-SNAPSHOT</version>
    </plugin>
  </plugins>
  
  
</build>

最后的话

maven的知识点不多,熟悉常见的标签比较重要,接下来多用就能熟悉了,这边就是入个门