阶段三/Maven项目管理

目录

Maven核心特性

Maven项目标准结构

Maven的坐标

Maven项目的标准结构

Maven依赖管理

本地仓库与中央仓库

项目打包

Maven常见命令


Maven核心特性

  • 项目设置遵循统一的规则,保证不同环境的兼容性
  • 强大的依赖管理,项目依赖组件自动下载,自动更新
  • 可扩展的插件机制,使用简单,功能丰富

Maven是由Java编写的软件,要运行Maven必须要安装JDK或JRE。

bin目录下的mvn.cmd是Maven的核心执行文件,对于Maven执行的命令必须通过它来执行。

Maven项目标准结构

Maven的坐标

  • GroupId:机构或者团体的英文,采用“逆向域名”形式书写
  • ArtifactId:项目名称,说明其用途
  • Version:版本号,一般采用“版本+单词”形式,例如:1.0.0.RELEASE

Maven项目的标准结构

  • ${basedir}:根目录,用来保存pom.xml文件
    • pom.xml:项目(Project)对象(Object)模型(Model)文件
    • target:项目输出目录,用于存放jar、war文件
      • classes:字节码(.class)的编译输出目录
    • src
      • test
        • java:测试类的源代码目录
        • resources:测试时需要使用的资源
      • main
        • java:Java源代码目录
        • resources:资源目录,保存测试文件,静态图片等

Maven依赖管理

  • Maven利用dependency(依赖)自动下载,管理第三方jar
  • 在pom.xml文件中配置项目依赖的第三方组件
  • maven自动将依赖从远程仓库下载至本地仓库,并在工程中引用

在浏览器中输入search.maven.org,https://search.maven.org/,会看到下面的界面,例如我们想找mysql的java驱动,直接在搜索框输入 mysql java 

点进来之后,下拉框中选择对应的版本,其中右侧的dependency复制到项目的pom.xml文件中即可。

然后我们的IDEA中就会多出

上面的例子只显示了引用单个的jar,对于相对复杂的组件,往往不是一个jar包而是一对jar包的组合,该组件有可能依赖其他的组件,此时,Maven会对这个dependency进行深入解析将所有的依赖一次性进行下载。

例如:spring-webmvc框架,我们添加dependency

但是我们会多出一堆组件,会把spring-webmvc依赖的所有组件都下载。

此时,我们点进groupId那一行,会进入一个pom文件,我们可以看到他的底层依赖,即dependency。引入一个组件就会将完整的jar包下载,不用考虑会存在jar包冲突。

本地仓库与中央仓库

项目启动的时候,Maven对pom.xml进行加载,分析其dependency依赖,之后会在本地仓库(我们的本地的一个目录)查找看依赖是否存在,若不存在,则去中央仓库下载到本地仓库,再用Maven加载下载好的依赖。

自然了,若都从apache的国外网站下载,速度通常很慢。这时候会用到代理服务器(对于Maven来说,中央仓库有一个一个的私服,即服务器的备份,这些备份的服务器往往存在与国类),其中属阿里巴巴提供的Maven私服最出名。

浏览器输入:maven.aliyun.com,https://maven.aliyun.com/mvn/guide,我们用public的,这边我们把public的aliyun的仓库地址拷过来。

添加repositories,然后我们添加一个url为的私服https://maven.aliyun.com/repository/public,最重要的就是url了,不过还要填上id,不然会有错误提示,name随意,通常回填然后和id保持相同。添加私服后,本地仓库缺少jar包,会优先去我们添加的私服下,再没有才回去apache的网站。

<repositories>
    <!-- - - - - - - 创建私服的地址 - - - - - - -->
    <repository>
        <id>aliyun</id>
        <name>aliyun</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </repository>
</repositories>

项目打包

  • Maven可将Java项目打包为jar包、war包
  • Maven项目打包是通过Plugins(插件)技术实现
  • Maven输出Jar包插件:maven-assembly-plugin

注意别写错manifest单词,当使用maven-assembly-plugin插件打包时,不能用mvn package,需要使用mvn assembly:assembly命令。

<build>
        <plugins>
            <!-- - - - - 配置插件 - - - - - - -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.5</version>
                <configuration>
                    <!-- - - - - - 指定入口类 - - - - - - -->
                    <archive>
                        <manifest>
                            <mainClass>com.imooc.Pinyin</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <!-- - - - - all in one,  在打包时会将所有引用的jar合并到输出的jar文件中- - - -->
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>

 

此时我们发现,target目录下有

其中MavenLearn-1.0.jar,缺乏依赖项,不可以直接通过java -jar MavenLearn-1.0.jar运行,我们可以运行MavenLearn-1.0-jar-with-dependencies.jar,java -jar MavenLearn-1.0-jar-with-dependencies.jar,效果如下

和在IDEA中的效果一样

Maven常见命令

  • mvn archetype:geberate:创建Maven工程结构
  • mvn compile:编译源代码
  • mvn test:执行测试用例
  • mvn clean:清除产生的项目
  • mvn package:项目打包
  • mvn install:安装至本地仓库

 

 

 

参考:慕课网-Java工程师

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值