maven系列:漫谈maven

本文详述了Maven如何简化项目构建和依赖管理,包括配置、工程创建、依赖解析、构建过程及常用命令,使开发流程更加高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们一起来回顾下老式的开发上线流程哈
1)领导搭建一个ssh或者其他web框架,然后各自开发自己的业务代码,然后编写单元测试(这个看情况,楼主以前也不是每个项目都要写单元测试/摊手,当然这敏捷开发中,这个环节至关重要),然后运行,生成测试报告,提交jar包
2)遇到三方jar包就需要自己找,比如打印日志(log4j)等,有的时候还咬咬牙使用可怜的积分去csdn下载jar包,那是一个狠啊,说好open的嘛,一个jar包还要积分才能下载,过分了哈。下载之后放到lib中
3)试着尝试跑项目,看看报不报和jar包有关的错,比如某个类不存在啊,或者有没有依赖不全啊,报小红叉啊,包冲突啊等各种情况,更恶心的是不同版本号的同一个jar包产生不同的效果
4)项目跑通了,每个人开始开发,然后集中代码,看看能不能跑通
5)集中测试,编译,打包,部署,都是手工的哦(如果是手工打造一辆劳斯莱斯,那也是不错的嘛),这个地方吃亏不讨巧的事屡屡发生,开发者崩溃
6)测试环境部署好之后,测试工程师上场,发现bug等,开发工程师修改bug然后重复上面的4,5步骤
7)部署也很麻烦,停下tomcat,干掉旧的war包,放入新的war包,启动工程
8)如果工程比较大,嘿嘿

时代在发展,社会在进步,这些头疼的事得成为过去,成为简单的事,就和以前人不能上天,现在可以上天了一样,上天就变得简单了
1)批量跑单元测试
2)多个工程集中
3)通过配置管理依赖
4)自动管理jar包
5)自动编译打包发布
6)……

在当代能把这两件事干好的,有两个我要推荐的,一个是gradle,一个是我们接下来给大家讲的maven
有人会问了,maven真的有你说的那么神么,必须的呀,就让我带着大家逐渐解开

一)开发环境准备
安装java,这个去官网下载安装,配置环境变量,执行命令java -version,看到对应的版本号即可
安装maven,同样也是去官网下载安装,配置环境变量,执行命令mvn -v,看到对应的版本号即可,因为maven也是java写的,所以jdk必不可少

二)配置文件小修改
我们打开maven安装目录的conf目录中的settings.xml,我们发现里面有很多东西,这个在后面的讲解中会逐个放开,我们在此就添加一个mirror,因为默认的是国外的镜像,会导致下载jar包的时候很慢,我们给改成国内的,比如阿里的(注意,如下代码放到mirrors标签中

        <mirror>                
                <id>nexus-aliyun</id>
                <mirrorOf>*</mirrorOf>
                <name>Nexus aliyun</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>

当然了,很多公司都有自己的自建仓库,这个时候把url改为自己公司的即可


三)创建maven工程
我们创建一个项目文件夹,然后我们使用maven命令(mvn archetype:generate)创建一个工程
mvn archetype:generate -DgroupId=com.lyh.maven -DartifactId=my-first-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
其中my-first-app就是你创建工程的名字,我们进入到my-first-app文件夹中,看下目录结构
├─src
│  ├─main
│  │  └─java
│  │      └─com
│  │          └─lyh
│  │              └─maven-------App.java
│  └─test
│      └─java
│          └─com
│              └─lyh
│                  └─maven-------App.java

│ pom.xml

目录简单介绍下,其中src/main/java目录包含了这个项目的java源码,src/test/java目录包含了测试代码,pom.xml文件是maven的核心配置文件,是这个项目的Project Object Model。
我们打开pom.xml文件简单看一下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.lyh.maven</groupId>
  <artifactId>my-first-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-first-app</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

<project>:pom.xml中的顶层元素
<modelVersion>:POM本身的版本号,一般很少变化
<groupId>:创建这个项目的公司或者组织,一般用公司网站后缀,比如com.company,或者cn.company,或者org.lyh
<artifactId>:这个项目的唯一标识,一般生成的jar包名称,会是<artifactId>-<version>.<extension>这个格式,比如说myapp-1.0.jar
<packaging>:要用的打包类型,比如jar,war,等等。
<version>:这个项目的版本号
<name>:这个项目用于展示的名称,一般在生成文档的时候使用
<url>:这是这个项目的文档能下载的站点url,一般用于生成文档
<description>:用于项目的描述


同时我们发现文件中
dependencies中有dependency,仿佛是一个jar包,嗯,这是个默认引用的jar,这就使用到了maven的包依赖管理,其中
groupId 组织
artifactId jar的唯一标识
version jar包版本号
scope 范围

version一般是三层,如上3.8.1,这三个不是乱定义的,是有一定的规律:第三位是最小版本,一般如果是修复一些bug,或者作出轻微的改动,会累加第三位小版本;
第二位是小版本,一般如果加入一些新的功能或者模块,或者做了一些重构,会累加第二位小版本;
第一位是大版本,一般就是如果整体架构有特别的升级或者变化,才会累加第一位大版本。

这些依赖jar包在c->用户->XXX->.m2->repository文件夹中,这个也可以通过setting.xml文件进行修改的
该有的都有了,我们知道要执行一个java程序得把其打成jar包执行,可是我们在上面并没有发现可以放jar包的地方啊,
这个时候我们得执行命令mvn clean package来重新构建下工程
构建好之后,我们发现和src并列有一个target目录,我们打开看一下,居然发现了jar包,这速度杠杠的啊
其实执行这个命令,把原来的.class文件都删除了,并重新编译了,然后打包成jar包,太方便了
简单的说一下mvn clean package命令发生了什么①查看setting.xml文件的配置文件  ②解析maven工程中的pom.xml ③根据pom.xml中的依赖,看下本地有没有,如果没有的话就去远程仓库下载   ④下载之后就缓存起来,便于以后使用  ⑤clean 清理上一次的构建文件  ⑥重新编译代码  ⑦重新打成一个jar包

四)执行
执行命令java -cp target/my-first-app-1.0-SNAPSHOT.jar com.lyh.maven.App,我们看到打印helloword

说了这么多,简单概括:maven让依赖和构建变得简单

常用命令一览
1. 创建Maven的普通java项目:
   mvn archetype:create  -DgroupId=packageName  -DartifactId=projectName 
2. 创建Maven的Web项目:  
    mvn archetype:create -DgroupId=packageName   -DartifactId=webappName-DarchetypeArtifactId=maven-archetype-webapp   
3. 编译源代码: mvn compile
4. 编译测试代码:mvn test-compile   
5. 运行测试:mvn test   
6. 产生site:mvn site  
7. 打包:mvn package  
8. 在本地Repository中安装jar:mvn install
9. 清除产生的项目:mvn clean  
10. 生成eclipse项目:mvn eclipse:eclipse 
11. 生成idea项目:mvn idea:idea 
12. 组合使用goal命令,如只打包不测试:mvn -Dtest package  
13. 编译测试的内容:mvn test-compile 
14. 只打jar包: mvn jar:jar 
15. 只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile
      ( -skipping 的灵活运用,当然也可以用于其他组合命令) 
16. 清除eclipse的一些系统设置:mvn eclipse:clean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值