zoukankan      html  css  js  c++  java
  • .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>
  • 相关阅读:
    HDU 1002 大数A+B
    HDU 2066 一个人的旅行(最短路)
    HDU 1869 六度分离(最短路 floyd)
    HDU 1159 Common Subsequence(LCS)
    POJ 3061 Subsequence(尺取法)
    NYOJ 10 skiing(记忆化搜索)
    dedecms添加全站的rss订阅功能
    dedecms artlist读取全站最新文章
    dedecms的title怎么优化?
    DedeCMS提示Maximum execution time of 30 seconds exceeded in解决办法
  • 原文地址:https://www.cnblogs.com/zltao/p/10545928.html
Copyright © 2011-2022 走看看