maven项目管理工具

使用maven的必要性

  1.maven使用本地仓库存储jar包,所有项目都会共用仓库中的同一份jar包。

  2.maven可以解决版本兼容问题,自动引入所需的兼容版本。

  3.maven可以很方便的删除或是升级一些jar包,只需要在配置文件中删掉或更改版本号即可。

  4.maven内置web server服务器,可以连接远程服务器,自动上传部署项目,一键切换服务器环境等。

  5.目前github上有大量的开源项目,而他们都是maven项目。

 

maven安装

  下载地址:http://maven.apache.org/download.cgi

  下载后解压得到文件夹

    bin目录:mvn的运行脚本mvn mvnDebug

    boot目录:类加载器jar包

    conf文件夹:setting.xml配置文件

    lib文件夹:maven运行时需要的java类库

  配置环境变量: 打开.bash_profile键入如下内容 vim ~/.bash_profile  

# maven所在的目录
export M2_HOME=/Users/baidawei/maven                        
# maven bin所在的目录
export M2=$M2_HOME/bin  
# 将maven bin加到PATH变量中
export PATH=$M2:$PATH  
# 配置JAVA_HOME所在的目录,注意这个目录下应该有bin文件夹,bin下应该有java等命令  
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

  然后刷新配置 source ~/.bash_profile   输入mvn -v 查看是否配置成功

 

Maven仓库

  Maven提供三种仓库 当获取jar包时,首先去本地仓库找,如果本地仓库没有 则去远程仓库(私服)去下载 如果还没有则去中央仓库(互联网)下载 再没有 那就真没有了...

  1.本地仓库 自己维护

    打开conf下的settings.xml 查找localRepository 有一个默认地址${user.home}/.m2/repository 修改本地仓库位置 更改此处位置为/users/baidawei/maven/repository

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository-->
  <localRepository>/users/baidawei/maven/repository</localRepository>

  2.远程仓库(私服) 公司维护

  3.中央仓库 maven团队维护 

 

Idea集成了maven,默认使用的是内置的,我们可以配置全局setting,比如远程仓库地址,本地编译环境变量等。

打开settings,在输入框中搜索maven,修改maven文件夹,以及配置信息和仓储位置。

 

使用Idea编辑器创建maven项目

  1.create New Project

  2.左侧选择maven 勾选Create from archetype来创建一个简单的maven项目 ,在下拉选项中 选择webapp -> next

  3.接下来填写maven的坐标 groupId(公司域名反写),artifactId(项目名),version(版本号)->next.

  4.在面板中选择本地的maven文件夹->next->finish

    5.在main文件夹下新建一个java文件夹 修改为源码文件夹 command+; ->Modules -> 选择java文件夹 点击marks as Sources

pom.xml配置

  刚创建完的项目根目录有一个pom.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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <!--pom文件的模型版本 -->
  <modelVersion>4.0.0</modelVersion>
  <!--项目打包发布的文件 -->
  <packaging>war</packaging>
  <!--项目描述 -->
  <name>sshTest</name>
  <!--com.公司网站 -->
  <groupId>com.david</groupId>
  <!--项目名 -->
  <artifactId>sshTest</artifactId>
  <!--版本 -->
  <version>1.0-SNAPSHOT</version>
   ...

第二部分,引入jar包

  <dependencies>
    <!-- 自动生成的 意思是junit-3.8.1.jar引入项目中 -->
    <!--dependency标签:引入jar包到本地仓库 -->
    <dependency>
      <!--jar包在仓库中的坐标 -->
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <!--scope作用范围 test指 只在测试时使用,发布时会忽略这个包(需要发布的包忽略这个设置) -->
      <scope>test</scope>
    </dependency>
  </dependencies>

第三部分,构建项目

  <build>
    <!--打包文件名 -->
    <finalName>com</finalName>
    <!--插件 -->
    <plugins>
      <plugin>
        <!--坐标 -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <!--插件的参数 -->
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

 

国内镜像下载(公司搭建私服禁用,会只从镜像找)

maven默认会从中央仓库下载jar包,这个仓库在国外,全世界的人都会去下载,所以下载速度很慢,可以使用国内镜像下载。

在settings.xml中配置,所有项目都会生效

  <mirrors>
     <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

 

继承

如果项目有多个模块,都需要依赖相似的jar包,只需要创建一个父模块,在它的pom.xml文件中配置依赖jar包,功能模块只需要继承父模块,就可以自动得到其依赖的jar包,而不需要在每个模块中都重复的配置。

 

1.创建父模块 packaging必须选择pom,只有pom才能被继承。

2.编辑pom.xml配置好公共的依赖jar包后,执行maven install 将parent.pom安装到本地仓库

3.在子项目的pom.xml中不需要配置依赖,只要继承parent.pom的坐标,就可以自动依赖parent的所有jar包。

    <parent>
        <groupId>xxx</groupId>
        <artifactId>xxx-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

4.由于每个子模块的功能不同,如果直接继承父模块,可能会将不需要的多余的jar包也继承过来,可以在dependencies上加一级<dependencyManagement>,子模块可以选择性的继承。

5.在子模块中,配置parent继承后,不会自动去依赖,需要手动添加需要的依赖,只是不需要再配置版本号,便于在parent中统一管理jar包版本。

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

 

安装nexus私服

官方下载地址:https://www.sonatype.com/download-oss-sonatype

1.上传到linux 解压到/usr目录 tar -xvf nexus-3.11.0-01-unix.tar.gz -C /usr 解压后mexus是核心文件夹 sonatype-work用来存储下载的jar包 

2.进入bin目录 安装运行 ./nexus start 

3.开启防火墙8081端口  firewall-cmd --zone=public --add-port=8081/tcp --permanent 修改后重启一下防火墙 firewall-cmd --reload

4.输入 ip:8081访问 

5.登陆nexus耐克瑟斯 默认账号admin 密码admin123

6.点击最上面的齿轮按钮 -> 左边的repository-repositories可以看到当前仓库列表

  列表中 format列:maven2是java仓库,nuget是.net仓库

        type列:proxy是代理仓库,hosted是宿主仓库,group是仓库组

      代理仓库proxy: 局域网内用户首先从代理仓库下载jar包,如果没有就去远程仓库下载到代理仓库  

 修改 代理仓库的默认下载地址(设置镜像下载):点击列表中的maven-central代理仓库,出现设置页面,将remote storage修改为 阿里镜像 http://maven.aliyun.com/nexus/content/groups/public/

 回到列表页,点击右边的copy按钮,复制仓库地址粘贴到pom.xml中 设置如下

  <repositories>
    <repository>
      <id>central</id>
      <name>central</name>
      <url>http://10.211.55.5:8081/repository/maven-central/</url>
    </repository>
  </repositories>

如果 之前在settings.xml中设置了镜像仓库,需要注释掉,代理仓库才会生效。

点击齿轮旁边的方块->选择下面的browse菜单-》点击maven-central仓库 下载jar包会在这里 ,局域网内其他人可以直接从这里下载,而不需要外网

      宿主仓库hosted:与代理仓库相反,他没有远程仓库,自己就是终点。主要用于多模块开发时,将某一模块代码打成jar包,发布到宿主仓库,其他项目成员可以从这个仓库下载你的模块jar包,在其他模块中使用这个模块类的功能。

      在pom.xml中设置发布仓库如下

  <distributionManagement>
    <repository>
      <id>releases</id>
      <name>releases</name>
      <url>http://10.211.55.5:8081/repository/maven-releases/</url>
    </repository>
  </distributionManagement>

      在setting.xml中设置账号和密码,id要和上面的对应,匿名用户只有读取的权限,没有发布的权限

  <servers>
    <servers>
      <server>
        <id>releases</id>
        <username>admin</username>
        <password>admin123</password>
      </server>
    </servers>
  </servers>

 

 

   

 

posted @ 2018-05-22 21:03  海盗船长  阅读(237)  评论(0编辑  收藏  举报