zoukankan      html  css  js  c++  java
  • maven管理工具

    Maven解决的问题:

    1. 使用maven前搭建项目需要引入各种jar包,并且还可能有jar包冲突的问题
        解决jar包冲突的方式:
            1. 第一声明优先原则
            2. 路径近者优先原则. 直接依赖路径比传递依赖路径近.
                直接依赖: 项目中直接导入的jar包,就是该项目的直接依赖包
                传递依赖: 项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去.
            3. 直接排除法(推荐)
                使用<exclusions>标签,排除jar包下的依赖包(在dependency中使用)
                <exclusions>
                    <exclusion>
                        <groupId></groupId>
                        <artifactId></artifactId>
                    </exclusion>
                </exclusions>
                
    2. maven可以向ide一样,将代码编译为class字节码文件
    3. 可以指定某个目录下的单元测试一次执行,明确知道哪些是有异常的.哪些对的.
    4. 可以直接将java项目进行打包,一个命令解决
    

    Maven的核心功能

    1. 依赖管理: maven工程对jar包的管理过程.(节省磁盘空间,符合代码可重用)
        jar包的坐标: 根据坐标去仓库寻找jar包并依赖
        jar包的仓库: 存放和管理jar包的仓库
    2. 一键构建: 项目的整个构建过程,使用maven一个命令可以轻松完成整个工作.
        构建: 指的是项目从编译、测试、运行、打包、安装, 部署整个过程都交给maven进行管理,这个过程叫做构建
        mvn tomcat:run   ====>  运行项目
    

    安装:

    1. 下载: http://archive.apache.org/dist/maven/maven-3/ 
    2. 解压: 注意路径没有中文,没有空格
    3. 配置环境变量:
        新建 MAVEN_HOME     maven解压的路径
        编辑 Path           新建 %MAVEN_HOME%in
    4. 测试: cmd  ===> mvn -v
    

    maven仓库的种类:

    1. 本地仓库(默认是c盘,建议修改)
        重新指定本地仓库: <localRepository>指定文件夹</localRepository>
    2. 远程仓库(私服)
    3. 中央仓库(几乎所有开源的jar包)
    > 仓库间的关系:
        启动maven工程,maven会通过pom文件的jar包坐标去本地找对应jar包
        默认情况下,如果本地仓库没有jar包,会自动去中央仓库下载
        在公司中,如果本地没有,会先从私服上下载,如果私服没有,可以从中央仓库下载,也可以本地上传
    

    maven的标准目录结构:

    web工程(java工程只包含前四个):
        src/main/java  ----> 核心代码部分
        src/main/resources  ----> 配置文件部分
        src/test/java  ----> 测试代码部分
        src/test/redources ----> 测试配置文件
        src/main/webapp ----> 页面资源
    

    maven的常用命令

    mvn clean         ===> 删除编译好的本地项目信息(删除target目录)
    mvn compile       ===> 将src/main/java代码进行编译放置在target目录下
    mvn test          ===> 编译src/main/test和src/main/java下的java代码
    mvn package       ===> 将项目进行打包(同时会编译)放在target目录下(至于是war包还是jar包由pom.xml中的配置决定)
    mvn install       ===> 将代码进行编译并打包,并把包放在本地仓库下
    mvn deploy        ===> 部署项目,包含了前面5个命令
    

    maven的生命周期(3套)

    清理生命周期
        清除项目编译信息 ====> clean
    下面的五个命令就是一个默认的生命周期,执行后面的命令前面的命令也会执行一遍
        编译   ====> compile
        测试   ====> test        
        打包   ====> package
        安装   ====> install
        发布   ====> deploy
    站点生命周期(知道有这个概念就好)
    

    maven的概念模型图

    maven的概念模型图

    maven与idea的集成

    1. idea的configure下的setting选项配置本地的maven和settings的路径
    2. maven下的 runner选项下配置
        VM Options       -DarchetypeCatalog=internal
    

    maven项目的聚合,拆分和依赖(对于概念不是很了解,只知道用法)

    简单来说就是将一个项目分成多个模块.
    1. 工程和模块的区别:
        1. 工程不等于完整的项目,模块也不等于完整的项目,完整的项目看的是代码的完整性,代码完整就是一个完整的项目.
        和此项目是工程和模块没有任何关系.
        2. 工程天生只能使用自己内部的资源,工程天生是独立的.但是后天可以和其他项目和模块产生关系
        模块天生不是独立的,模块天生是属于父工程的,模块一旦创建,所有父工程的资源都可以使用.
        3. 父子工程之间,子模块天生集成父工程,可以使用父工程所有资源.
            子模块之间天生没有任何关系.但是可以使用dependency产生关联.
        4. 父子工程之间不用建立关系,继承关系是先天的,不需要手动建立.
        5. 平级之间的引用叫依赖,依赖不是先天的,依赖是需要后天建立的.
    2. 提供一个ssm整个的聚合拆分模板,可以去下载(使用的坚果云)
        https://www.jianguoyun.com/p/DUv6DuEQ7sKPBxjetHs
    

    maven运行环境修改

    1. tomcat7插件:
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
               <!--指定端口号-->
              <port>8080</port>
            </configuration>
         </plugin>
    2. jdk8插件
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <target>1.8</target>
            <source>1.8</source>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>
    

    私服的搭建和基本使用

    1. 命令行窗口(管理员身份运行)
    2. 切换到解压缩后的bin目录
        nexus install ====> 安装
        nexus uninstall ====> 卸载
    3. 访问: 默认端口号是8081
        localhost:8081/nexus
    4. 仓库的类型:
        * proxy: 代理仓库,主要代理远程的仓库,私服和远程仓库之间的连接
        * group: 仓库组,通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包
        * hosted:宿主仓库,内部项目、付费jar
            1. releases  发布内部release版本的仓库(正式版本)
    	    2. snapshots 发布内部snapshots版本的仓库(测试版本)
    	    3. third 自建第三方jar
    5. 上传jar包到私服:
        先配置本地maven的配置文件:
            servers标签内部配置:
                	<server>
                   		<id>releases</id>
                   		<username>admin</username>
                   		<password>admin123</password>
                   	</server>
                   	<server>
                   		<id>snapshots</id>
                   		<username>admin</username>
                   		<password>admin123</password>
                   	</server>
        maven项目的pom.xml的配置:
            <distributionManagement>
                <repository>
                    <id>releases</id>
                    <url>http://localhost:8081/nexus/content/repositories/releases/</url>
                </repository>
                <snapshotRepository>
                    <id>snapshots</id>
                    <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
                </snapshotRepository>
            </distributionManagement>
        之后使用deploy命令就可以将项目进行部署,并打包,将包上传到nexus私服.
    6. 从nexus下载jar包配置:
        <profiles>
             <profile> 
        		<!--profile的id -->
        		<id>dev</id>
        		<repositories>
        			<repository> <!--仓库id,repositories可以配置多个仓库,保证id不重复 -->
        				<id>nexus</id> <!--仓库地址,即nexus仓库组的地址 -->
        				<url>http://localhost:8081/nexus/content/groups/public/</url> <!--是否下载releases构件 -->
        				<releases>
        					<enabled>true</enabled>
        				</releases> <!--是否下载snapshots构件 -->
        				<snapshots>
        					<enabled>true</enabled>
        				</snapshots>
        			</repository>
        		</repositories>
        		<pluginRepositories> <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
        			<pluginRepository> <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
        				<id>public</id>
        				<name>Public Repositories</name>
        				<url>http://localhost:8081/nexus/content/groups/public/</url>
        			</pluginRepository>
        		</pluginRepositories>
        	</profile>
        </profiles>
    	<activeProfiles>
            <activeProfile>xdclass</activeProfile>
            <activeProfile>dev</activeProfile>
         </activeProfiles>
    7. 安装第三方jar包到本地仓库:
        ----进入jar包所在目录运行
        mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile=fastjson-1.1.37.jar -Dpackaging=jar
        ----打开cmd直接运行
        mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=D:fastjson-1.1.37.jar(切换成自己的目录)
        
    8. 安装第三方jar包到私服:
        --在settings配置文件中添加登录私服第三方登录信息
        <server>
        <id>thirdparty</id>
        <username>admin</username>
        <password>admin123</password>
        </server>
        ----进入jar包所在目录运行
        mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=fastjson-1.1.37.jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
        ----打开cmd直接运行(指定自己的jar包)
        mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=C:fastjson-1.1.37.jar       -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
  • 相关阅读:
    让DateTimePicker显示空时间值
    Microsoft Office ACCESS作为网站数据库的弊端
    存储过程中有临时表生成DataSet会失败
    C# Winform 开源控件
    SQL Server format phone number
    RDLC, canGrow=True, canShrink=False, content are shrinked to the left in Safari.
    C#.net winform skin 皮肤大全devexpress,IrisSkin,DotNetSkin,SkinCrafter
    Inside WCF Runtime
    IOS开发中的几种设计模式介绍
    android ndk gdb 调试
  • 原文地址:https://www.cnblogs.com/wadmwz/p/9813462.html
Copyright © 2011-2022 走看看