第一章:JAVA项目工程化之项目构建工具MAVEN

欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java体系。使Java的各种后端技术在你心中模块化;让你在工作中能将Java各个技术了然于心;能够即插即用。本章我们来一起了解项目构建工具Maven。


什么是项目构建工具?

在进行编程操作的时候,我们常常会遇到很多与编程无关的项目管理工作,如下载依赖、编译源码、单元测试、项目部署等操作。一般的,小型项目我们可以手动实现这些操作,然而大型项目这些工作则相对复杂。构建工具是帮助我们实现一系列项目管理、测试和部署操作的工具。

Java项目构建工具有哪些?
对于Java项目的构建工具;传统构建工具有Ant,主流构建工具:Maven,新兴构建工具:Gradle
在这里插入图片描述

第一章:JAVA项目工程化之项目构建工具MAVEN_第1张图片
第一章:JAVA项目工程化之项目构建工具MAVEN_第2张图片
Maven的构建项目的生命周期有哪些?

  • maven的构建生命周期中几个常见的阶段
  • validate:验证项目以及相关信息是否正确
  • compile:编译源代码和相关资源文件
  • test:对测试代码进行测试
  • package:根据不同的项目类型进行打包
  • verigy:验证打包的正确性
  • install:将打包好的包安装到本地
  • deploy:将打包好的包发布到远程

Maven的主要功能?

  1. 依赖管理
  2. 规范目录结构
  3. 完整的项目构建阶段
  4. 支持多种插件

来了解Maven配置文件pom.xml



    4.0.0

    
    com.jimisun
    learnmaven
    1.0-SNAPSHOT

    
    war

    
    
        4.1.1.RELEASE
    

    
    
        
            org.springframework
            spring-context
            ${spring.version}
        
    

    
    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.7.0
                
                    1.8
                    1.8
                
            
        
    


Maven强大功能:管理依赖

Maven通过坐标groupId:artifactId:version来标识一个唯一的二进制版本,一个Maven工程如果添加某个依赖只需要查找这个依赖的坐标即可,开发中常用查询依赖网址http://mvnrepository.com/


    
        
        
            
            org.springframework
            
            spring-context
            
            4.1.1.RELEASE
        
    

PS:通过parent可以实现pom文件继承父类完成统一配置管理,可以使用和统一依赖和插件,不同于和的是,如果子类pom没有声明和不生效!

Maven辅助功能:规范目录结构
在一个maven项目中,一个标准的web项目结构如下
第一章:JAVA项目工程化之项目构建工具MAVEN_第3张图片
项目的结构是支持自定义的,但是不要这么做,别人看到自定义的项目结构会产生歧义,构建标准的目录结构有利于项目构建的标准化。如果需要自定义项目结构,可以在pom中这样配置。


        
            
                org.apache.maven.plugins
                maven-war-plugin
                
                    WebContent/
                
            
        
        src
        
            
                resources
            
        
        test/java
        
            
                test/resources
            
        
        build

java代码目录移动到./src
配置文件目录移动到resources
测试代码目录移动到./test/java
测试配置文件移动到./test/resources
webapp根目录移动到WebContent
编译目录改变成./build

Maven其他功能:支持多插件

  • maven-compiler-plugin:源码编译插件
  • maven-source-plugin:源码发布插件,绑定compile阶段 执行jar goal,将源码以jar包形式发布出去
  • maven-javadoc-plugin:javadoc插件,将源码的javadoc发布出去
  • maven-tomcat7-plugin:直接使用tomcat运行项目,mvn tomcat7:run
  • maven-shade-plugin:常用打包插件,绑定在package阶段,执行shade goal,将源码和依赖在一起独立运行
  • maven-assesmbly-plugin:和shade相似,打包插件,支持tar,zip,gz
  • maven-gpg-plugin:jar包的签名插件,针对自己发布的jar包签名

Maven其他常用配置
配置本地Maven仓库:在maven的conf目录的settings.xml的settings标签中增加下面一行

E:\maven\mavenhome\repo(你的本地仓库地址)

配置Maven镜像远程仓库(阿里):在maven的conf目录的settings.xml的mirrors标签中增加下面代码

 
    alimaven 
    aliyun maven 
    http://maven.aliyun.com/nexus/content/groups/public/ 
    central 
   

根据不同环境打包不同配置文件到项目(有示例代码点击此处查看完整示例代码)


        
            dev
            
                true
            
            
                resource/dev
            
        
        
            prod
            
                true
            
            
                resource/prod
            
        
    

   
        
            
                ${resource.dir}
            
            
                resources
            
        
    

如此,就分为dev和prod两个环境,对应每一种环境其资源文件路径不一样,在使用MVM时,使用-P指定profile即可生效


## Java开发之上帝之眼系列教程其他文章
  • Java开发之上帝之眼系列教程前言和章节目录汇总

勘误&感谢

本系列文章资料来源很多出自于互联网和在下本身的见解,受限于个人技术能力水平和其他相关知识的限制,相关见解错误或者资料引用错误请各位帮助留言校正!引用资料多来自于互联网,在下在引用前会遵循各位前辈或者博主的引用说明表示感谢,但互联网资料多是转发再转发或存在遗漏请原作者内信联系指正。

你可能感兴趣的:(Java开发之上帝之眼系列教程,java,maven,详解,maven命令,常用配置)