Maven项目管理工具

一:maven是什么?

    Maven是干什么用的?这是很多开发者在刚开始接触Maven时最大的问题。之所以会提出这个问题,是因为即使不使用Maven 我们仍然可以进行B/S结构项目的开发,从表现层,业务逻辑层到持久化层再到数据库都有成熟的解决方案——不使用Maven我们一样可以开发项目啊?

    其实Maven并不是直接用来辅助编码的,当我们整合各大框架进行web开发时,第一件事肯定就是整合jar包,一个工程下一份整合jar,工作区就会出现大量的重复文件,项目就会很臃肿,而maven只在本地仓库中保存一份,需要jar包的工程只需要以坐标的方式简单引用就可以了。

    其二,很多jar包之间都是相互依赖的,当使用maven时,我们就完全没有必要去了解其中的依赖关系。

    第三个原因:JavaEE开发中需要使用到的jar包种类繁多,几乎每个jar包在其本身的官网上的获取方式都不尽相同。为了查找一个jar包找遍互联网,身心俱疲,没有经历过的人或许体会不到这种折磨。不仅如此,费劲心血找的jar包里有的时候并没有你需要的那个类,又或者又同名的类没有你要的方法——以不规范的方式获取的jar包也往往是不规范的。

    第四个原因:随着JavaEE项目的规模越来越大,开发团队也越来越大,每个人手里不可能保存整个项目,必须将项目拆分成多个工程模块协同开发,maven的依赖管理机制就是解决工程拆分后个模块相互调用和访问的。

二:安装Maven并建立maven web项目:

网上有很多详细的教程,我就不在重复,建议即使用的Myeclipse也自己装一个。创建修改本地仓库。期间肯定会遇到很多问题,网上大部分都有解决方案。缺少插件,添加依赖,更改配置等等问题,几乎都会碰到,但是每个人的电脑和配置又都不同,我是花了整整一整天的时间才建立了第一个没有出错的Maven项目。

  后来又装了一次《番外篇:因为一个固态导致的——系统重装与JAVA软件环境下载安装配置》感觉很简单

三:Maven的常用操作

1)Maven常用构建命令:

  (在命令行中执行)Maven的命令要在pom.xml所在目录中去执行

1.1  Mvn compile:编译的命令,存在于 target 目录

1.2  Mvn clean:清除命令,清除已经编译好的class文件,具体说清除的是target目录中的文件

1.3  Mvn test:测试命令,该命令会将test目录中的源码进行编译

1.4  Mvn package:打包命令

1.5  Mvn install:安装命令,会将打好的包,安装到本地仓库

常常有些时候编译器会根据路径下载jar包失败,这时这个这个命令就体现出他的价值了

你可以到

https://mvnrepository.com/:

搜索你所需要的jar包下载下来,然后使用这个命令将jar包安装到本地仓库

mvn install:install-file -Dfile="C:\Users\Administrator\Downloads\ojdbc6-11.2.0.4.0-atlassian-hosted.jar" -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4.0-atlassian-hosted -Dpackaging=jar

 

  

1.6  组合命令

1.6.1  Mvn clean compile:下载jar包到本地仓库,先清空再编译

1.6.2  mvn clean test:先执行clean,再执行test,通常应用于测试环节

 1.6.3  mvn clean package:先执行clean,再执行package,将项目打包,通常应用于发布前

         执行过程:

                  清理————清空环境

                  编译————编译源码

                  测试————测试源码

                  打包————将编译的非测试类打包

1.6.4  mvn clean install:先执行clean,再执行install,将项目打包发布到本地仓库,通常应用于发布前

         执行过程:

                  清理————清空环境

                  编译————编译源码

                  测试————测试源码

                  打包————将编译的非测试类打包

                  部署————将打好的包发布到资源仓库中

2)这里我就只是写在Myeclipse2017中的构建命令了。

  maven clean 是清除target目录下的之前打好的jar包或者是war包;

  maven install 将项目输出构件部署到本地仓库

  maven generate-sources 会根据pom配置去生成源代码格式的包

  maven build,页面如图,可以在Goals中输入命令进行执行,就相当于在CMD中输入的一样,不加mvn 如输入 compile 点击Run即可

3)运行项目,Maven可以安装Toamct-maven插件直接运行,不用配置本地的Tomact,首先在pom.xml文件中添加如下内容

 1   <build>
 2     <finalName>SSHMavenModer</finalName>
 3     <plugins>
 4         <plugin>
 5             <groupId>org.apache.tomcat.maven</groupId>
 6             <artifactId>tomcat7-maven-plugin</artifactId>
 7             <version>2.0</version>
 8         </plugin>
 9     </plugins>
10   </build>

然后点击Run As ——>Maven Build ——>在Goals中输入【tomact7:run】然后打开浏览器访问即可。

由于我个人电脑问题,老是报无法加载Tomact的错,所以我选择用本地  Tomact 

  首先右键Build Path ——>AddLibrary——>MyEclipse Service Library——> 然后选择自己的本地  Tomact  即可,

 

 

运行时直接Run As ——>Myeclipse Service Application 即可。

四:在pom.xml中添加jar包依赖

在Maven项目中,jar包都是保存在本地仓库重复使用的,一个项目要想“调用”仓库里的jar包,就要对其进行配置,例如添加spring-core,应该是

1 <dependency>
2     <groupId>org.springframework</groupId>
3     <artifactId>spring-core</artifactId>
4     <version>5.0.0.RELEASE</version>
5 </dependency>

太多jar肯定不会全记住怎么写,所以要是想添加什么依赖,就直接百度,例如百度 maven spring-core repository  选择旁边的版本号点进去

 

 然后看到如图所示,复制到你自己的pom.xml中就可以了

五:使用Maven创建web项目:

直接创建的Maven项目的目录和直接用Myeclipse创建web项目还是有区别的,对比一下然后会发现只是放的位置变了,其他的都没变

这样对比一下就很清晰了,左边是原本的SSH项目,右边是新建的Maven项目(我也是新学习的,可能建的不全面)java存放代码,resources存放配置文件,test存放测试代码与文件,页面效果放在下边的webapp中,当然,如果需要各种依赖,就得在pom.xml中进行配置。

六:生命周期

  Maven有三个生命周期,clean生命周期,default生命周期、site生命周期,Maven的生命周期可以简单的理解为构建项目的步骤集合,只要执行后面的命令,那么前面的命令都会执行,不需要再重新去输入命令。

1  Clean生命周期

pre-clean 执行一些需要在clean之前完成的工作

clean 移除所有上一次构建生成的文件

post-clean 执行一些需要在clean之后立刻完成的工作

2 Default生命周期

validate

generate-sources

process-sources

generate-resources

process-resources 复制并处理资源文件,至目标目录,准备打包。

compile 编译项目的源代码。

process-classes

generate-test-sources

process-test-sources

generate-test-resources

process-test-resources 复制并处理资源文件,至目标测试目录。

test-compile 编译测试源代码。

process-test-classes

test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

prepare-package

package 接受编译好的代码,打包成可发布的格式,如 JAR 。

pre-integration-test

integration-test

post-integration-test

verify

install 将包安装至本地仓库,以让其它项目依赖。

deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

3 Site生命周期

pre-site 执行一些需要在生成站点文档之前完成的工作

site 生成项目的站点文档

post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

site-deploy 将生成的站点文档部署到特定的服务器上

常用命令:

maven 命令除了常用的几个,大部分经常记不住,整理一下,方便查询。

 

maven 命令的格式为 mvn [plugin-name]:[goal-name],可以接受的参数如下。

 

-D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试;

-P 指定 Profile 配置,可以用于区分环境;

-e 显示maven运行出错的信息;

-o 离线执行命令,即不去远程仓库更新包;

-X 显示maven允许的debug信息;

-U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次。

 

常用maven命令

 

  1. 创建maven项目:mvn archetype:create 

    指定 group: -DgroupId=packageName 

    指定 artifact:-DartifactId=projectName

    创建web项目:-DarchetypeArtifactId=maven-archetype-webapp  

  2. 创建maven项目:mvn archetype:generate

  3. 验证项目是否正确:mvn validate

  4. maven 打包:mvn package

  5. 只打jar包:mvn jar:jar

  6. 生成源码jar包:mvn source:jar

  7. 产生应用需要的任何额外的源代码:mvn generate-sources

  8. 编译源代码: mvn compile

  9. 编译测试代码:mvn test-compile

  10. 运行测试:mvn test

  11. 运行检查:mvn verify

  12. 清理maven项目:mvn clean

  13. 生成eclipse项目:mvn eclipse:eclipse

  14. 清理eclipse配置:mvn eclipse:clean

  15. 生成idea项目:mvn idea:idea

  16. 安装项目到本地仓库:mvn install

  17. 发布项目到远程仓库:mvn:deploy

  18. 在集成测试可以运行的环境中处理和发布包:mvn integration-test

  19. 显示maven依赖树:mvn dependency:tree

  20. 显示maven依赖列表:mvn dependency:list

  21. 下载依赖包的源码:mvn dependency:sources

  22. 安装本地jar到本地仓库:mvn install:install-file -DgroupId=packageName -DartifactId=projectName -Dversion=version -Dpackaging=jar -Dfile=path

 

web项目相关命令

 

  1. 启动tomcat:mvn tomcat:run

  2. 启动jetty:mvn jetty:run

  3. 运行打包部署:mvn tomcat:deploy

  4. 撤销部署:mvn tomcat:undeploy

  5. 启动web应用:mvn tomcat:start

  6. 停止web应用:mvn tomcat:stop

  7. 重新部署:mvn tomcat:redeploy

  8. 部署展开的war文件:mvn war:exploded tomcat:exploded   

 

posted @ 2018-03-06 16:51  阿苍老师  阅读(122)  评论(0编辑  收藏  举报