.Net转Java自学之路—Maven篇

Maven:

  Maven是Apache公司开源项目。是一个项目构建工具。用来依赖管理。

  同样的项目,使用Maven开发项目相对于传统方式开发项目占用的空间要小,因为Maven项目没有Jar包信息。因为Maven项目的Jar包信息都在Jar包仓库(又称Maven仓库)中。

  Maven查找Jar包的过程主要的核心就是依赖管理。当Maven项目中需要某一个Jar包,只需要在Maven项目中配置需要Jar包坐标信息。Maven程序根据Jar包坐标信息去Jar包仓库中去查找Jar包。

  坐标信息实例:struts2-core-2.3.24.jar Apache(公司名称/域名)+struts2(项目名称)+2.3.24(版本信息)

  好处:

    1、不再拷贝jar包。项目不需要存放jar包。导致项目源代码体积小。
    2、使用maven开发的项目,若环境统一导入别的maven的项目不会报错。
    3、代码耦合度进一步降低。
    4、方便项目进行升级。
    5、节省人力成本。

  优势如何实现:

    Maven的俩大核心:
      依赖管理:对jar包进行管理的过程。
      项目构建:项目在编码完成后,对项目进行编译、测试、打包、部署一系列的操作都是通过命令来实现。

    通过maven命令将web项目发布到tomcat:
      1、cmd命令行进入该发布项目的根目录。
      2、运行命令:mvn tomcat:run

  配置:

    配置环境变量:
      变量名:MAVEN_HOME
      变量值:指定到maven解压后的根目录。
      将maven_home环境变量配置到path变量中。

    配置本地仓库:
      在maven中的setting.xml中配置:

<localRepository>jar包仓库根目录</localRepository>

    maven项目核心配置文件:pom.xml

  Maven的cmd常用命令:

    clean:清理。mvn clean 去除项目中根目录的target目录。
    compile:编译。mvn compile 将编译完成的.class文件存放在项目根目录的target下。
    test:单元测试。mvn test 将项目根目录下的src/test/java中的单元测试类全部执行。在src/test/java下的类名有XXXTest.java的要求。
    package:打包。mvn package 将项目打包,打包项目根目录下的target目录。
    install:安装。解决本地多个项目公用一个jar包。mvn install 打包并放在jar包本地仓库。

  Maven项目生命周期:

    在maven中存在”三套“生命周期,每一套生命周期都是相互独立的,互不影响。在一套生命周期内,执行后面的命令前面命令会自动执行。

    CleanLifeCycle:清理生命周期。clean命令
    defaultLifeCycle:默认生命周期。compile、test、package、install、deploy命令
    siteLifeCycle:站点生命周期。site命令

  配置Eclipse中的Maven环境:

    1、配置m2e插件,Mars2版本自带maven插件。
    2、配置maven程序:
      window >> preferences >> Maven >> Installations >> Add >> 单击Directory选择解压的maven安装包.OK >> 勾选配置的maven >> OK
    3、配置userSetting,让eclipse知道本地仓库的位置:
      window >> preferences >> Maven >> User Settings >> 在User Settings中选择解压maven的安装包的conf/settings.xml配置文件。
    4、构建索引:
      window >> show view >> maven Repository >> 右击Local Repository(路径) >> Rebuild Index 来构建索引

  创建Maven项目:

    创建Maven项目后,勾选Create a simple project ,group id 域名、Artifact Id 项目名、Version 版本。Maven项目建好之后在src/main/webapp下会缺失WEB-INF/web.xml文件,需要手动创建。在pom.xml中设置编译版本。然后 右击项目名 >> maven >> update project >> 选择当前项目 >> OK 会指定编译版本。

  查找依赖:

    项目建立完成后,需要查找依赖(就是jar包):打开pom.xml,选择Dependencies >> Add >> 选择版本,添加依赖(jar包)。

  依赖范围:

    依赖范围:默认值 complie。
      complie:作用在在编译、测试、运行期间。
      test:作用在测试期间。
      provided:作用在编译、测试期间。
      runtime:作用在测试、运行期间。
      system:作用在编译、测试期间。

    运行就是部署到tomcat。如果使用到tomcat自带jar包,需要将项目中依赖作用范围设置为provided。

  运行Maven:

    右击项目>>run as/debug as >> maven build...
    然后在Goals中手动输入运行命令tomcat:run。而在debug as调试运行时,在该界面需要选择source选项关联下源码才能调试:
      source >> Add >> project >> 选择调试的项目 >> OK 

  传递依赖冲突解决:

    传递依赖:A(项目)依赖B(jar包),B依赖C(jar包),那么B就是A的直接依赖,C是A的传递依赖。若导入依赖D,D依赖C,B和D依赖的C版本不同。则会造成版本依赖冲突。

    Maven调解原则:
      1、第一声明者优先原则:使用先声明定义的传递依赖。
      2、路径近者优先原则:直接依赖级别高与传递依赖。

    Maven排除依赖:
      在pom.xml中选择Dependency Hierarchy >> 右击要排除的依赖 >> Exclude Maven Artifact... >> OK 

    Maven版本锁定:
      指定项目中依赖的版本。

<!-- 属性 -->
<properties>
    <test.version>版本号</test.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId></groupId>
            <artifactId></artifactId>
            <!-- OGNL表达式 -->
            <version>${test.version}</version>
        </dependency>
        <dependency>
            <groupId></groupId>
            <artifactId></artifactId>
            <!-- 也可以直接指定版本号 -->
            <version>x.x.x</version>
        </dependency>
        ......
    </dependencies>
</dependencyManagement>

  通过Maven对项目进行拆分、聚合:

    创建maven父工程:
      1、在父工程中只有pom.xml文件,父工程不进行编码。
      2、项目中需要的依赖信息,只需要在父工程中定义,子模块继承。
      3、将创建好的父工程发布到本地仓库。若父工程未发布到本地仓库,那么在发布子工程时会报错。

    单元测试:
      批量加载Spring配置文件:
        classpath:applicationContext.xml 加载本项目的指定配置文件。
        classpath:applicationContext-*.xml 加载本项目中以applicationContext-开头的配置文件。
        classpath*:applicationContext-*.xml 加载本项目和依赖包中所有以applicationContext-开头的配置文件。

    私服安装:
      1、安装包nexus-x.x-bundle.zip解压。
      2、使用管理员打开dos,在dos下执行命令安装私服。
      3、进入解压包下的bin目录,执行:nexus install
      4、启动服务:nexus start
      5、默认端口号8081,http://ip:8081/nexus/

    私服仓库类型:
      hosted:宿主仓库。存放本公司开发的jar包
        > Snapshots:测试版本
        > Releases:正式版本
        > 3rd party:第三方,存在版权问题-Oracle
      proxy:代理仓库
        > Central:代理中央仓库
        > Apache Snapshots:Apache下测试版本的jar包
      group:组仓库;包含宿主参数和代理仓库。
      virtual:虚拟仓库。

    上传Jar包到私服:
      1、在maven目录下conf/setting.xml认证:配置用户名/密码。

<server>
    <!-- 宿主仓库id -->
    <id>releases</id>
    <!-- 用户名 -->
    <username>admin</username>
    <!-- 密码 -->
    <password>admin123</password>
</server>
<server>
    <!-- 宿主仓库id -->
    <id>snapshots</id>
    <!-- 用户名 -->
    <username>admin</username>
    <!-- 密码 -->
    <password>admin123</password>
</server>

      2、在将要上传的项目的pom.xml中配置jar包上传路径url

<distributionManagement>
    <repository>
        <id>releases</id>
        <url>http://ip:8081/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <url>http://ip:8081/nexus/content/repositories/snapshot</url>
    </snapshotRepository>
</distributionManagement>

    执行命令上传项目到私服:deploy

    下载Jar包到本地仓库:在Maven目录下conf/settings.xml配置模板。

    激活模板:

<activeProfiles>
    <activeProfile>dev</activeProfile>
</activeProfiles>

 

posted @ 2019-03-17 10:58  水痕灬  阅读(439)  评论(0编辑  收藏  举报