Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

上一篇给大家介绍了Maven的概念和仓库的一些信息,接下来给大家分享一下使用命令和MyEclipse创建Maven项目

一、使用命令管理Maven项目

1.1、创建Maven java项目

  1)创建一个文件夹(MavenProject)——>该文件夹下按shift+右击选择在此处打开命令窗口——>这样创建的maven[java]项目就在该文件夹下

  2)命令:mvn archetype:generate -DgroupId=com.zyh.maven.quickstart -DartifactId=simple -DarchetypeArtifactId=maven-archetype-quickstart

    mvn:核心命令

    archetype:create:创建项目,现在maven高一点的版本都弃用了create命令而使用generate命令了。

    -DgroupId=com.zyh.maven.quickstart :创建该maven项目时的groupId是什么,该作用在上面已经解释了。一般使用包名的写法。因为包名是用公司的域名的反写,独一无二

    -DartifactId=simple:创建该maven项目时的artifactId是什么,就是项目名称

    -DarchetypeArtifactId=maven-archetype-quickstart:表示创建的是[maven] java项目

  3)运行的前提:需要联网,必须上网下载一个小文件

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  4)运行成功后

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  在D:\MavenProject下就会生成一个MavenJava的文件,该文件就是我们的maven java项目

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

1.2、创建Maven Web项目

  1)命令:mvn archetype:generate -DgroupId=com.zyh.maven.quickstart -DartifactId=MyWebApp -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot

    其他都差不多,创建maven web项目的话 -DarchetypeArtifactId=maven-archetype-webapp 比创建java项目多了一个 -Dversion=0.01-snapshot.

    在创建java项目的时候也可以加上这个,如果不写,会默认帮我们加上1.0-snapshot。

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  2)在D:\MavenProject下就会生成一个MyWebApp的文件,该文件就是我们的maven web项目

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  3)Maven Web项目结构

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

1.3、命令操作Maven java或Web项目

注意:使用命令时,必须在maven java项目的根目录下,及可以看到pom.xml

  1)编译:mvn compile  --src/main/java目录java源码编译生成class (target目录下)

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

    编译成功之后,可以看到MavenJava项目的根目录下多了一个【target】文件夹,这个文件夹就是编译成功之后Maven帮我们生成的文件夹,

    打开【target】文件夹,可以看到里面有一个【classes】文件夹,【classes】文件夹中存放的就是Maven我们编译好的java类。

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  2)测试:mvn test    --src/test/java 目录编译

    测试成功之后,可以看到MavenJava项目的根目录下多了一个【target】文件夹,这个文件夹就是测试成功之后Maven帮我们生成的文件夹,

    打开【target】文件夹,可以看到里面有一个【classes】和【test-classes】文件夹

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  3)打包:mvn package  --生成压缩文件:java项目#jar包;web项目#war包,也是放在target目录下

    描述:将maven java项目打包上传到本地仓库供别人调用

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

    打包成功之后,可以看到MavenJava项目的根目录下的【target】文件夹中多了一个MavenJava-1.jar,这个MavenJava-1.jar就是打包成功之后Maven帮我们生成的jar文件

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  4)安装:mvn install   --将压缩文件(jar或者war)上传到本地仓库

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

    安装成功之后,首先会在MavenJava项目的根目录下生成【target】文件夹,打开【target】文件夹,可以看到里面会有MavenJava-1.jar,这个MavenJava-1.jarr就是安装成功之后Maven帮我们生成的jar文件。

    除此之外,在我们存放Maven下载下来的jar包的仓库也会有一个Hello-0.0.1-SNAPSHOT.jar,所以Maven安装项目的过程,实际上就是把项目进行【清理】→【编译】→【测试】→【打包】,再把打包好的jar放到我们指定的存放jar包的Maven仓库中。

    在本地仓库中查看是否有该项目

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

    通过在本地仓库中的目录可以发现为什么通过groupId、artifactId、version可以定位到仓库中得jar包,也可以知道为什么groupId要使用公司域名的反写(因为这样唯一,不会与别的项目重名导致查找到的内容不精确)

  5)清理:mvn clean    --删除target目录,也就是将class文件等删除

  6)部署|发布:mvn deploy  --将压缩文件上传私服

  7)组合使用Maven命令

    maven的编译,清理,测试,打包,部署命令是可以几个命令同时组合起来使用的,常用的命令组合如下:

    mvn clean compile(先清理在打包)

    mvn clean install

    mvn clean test

    mvn clean package

二、使用MyEclipse创建Maven项目

使用myeclpse创建项目前,需要在myeclipse中配置maven的一些信息 比如:配置本地仓库、安装自定义maven(myeclipse中高版本自带了maven)等。

写一篇我将介绍怎么在myeclipse、eclipse和idea中配置Maven

2.1、创建Maven java项目

  1)选择maven project,如果右键新建没有,通过other获得

  2)创建一个简单的项目

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  3)设置项目参数,创建java项目

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  4)创建java项目结果

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

2.2、创建Maven web项目

  1)前面的第一和第二步都是一样的

  2)设置项目参数,其他一样,选择打包方式不一样。

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  3)创建web项目结果

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  4)pom.xml文件出错

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

    修改

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  5)更新项目

    项目右击选择Maven4MyEclipse

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

2.3、创建Maven项目

  1)前两步和上面的是一样的

  2)设置项目参数,其他一样,选择打包方式不一样。

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  3)结果

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

  maven项目一般没用,在开发中将一个项目拆分成多个项,就需要使用maven项目(pom项目)将其他子项目进行整合。

2.4、myeclipse的Maven操作

  Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

三、Maven的生命周期

  Maven生命周期就是为了对所有的构建过程进行抽象和统一,包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤

  Maven有三套相互独立的生命周期,请注意这里说的是"三套",而且"相互独立",这三套生命周期分别是:

    1)Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

    2)Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

    3)Site Lifecycle 生成项目报告,站点,发布站点。

  再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

3.1、clean生命周期

  clean生命周期每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行mvn clean ,这个的clean是Clean生命周期的一个阶段。有Clean生命周期,也有clean阶段。

  Clean生命周期一共包含了三个阶段:

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

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

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

  "mvn clean" 中的clean就是上面的clean,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,"mvn clean"等同于 mvn pre-clean clean ,

  如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。这是Maven很重要的一个规则,可以大大简化命令行的输入。

3.2、Default生命周期

  Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。这里,只解释一些比较重要和常用的阶段:  

    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 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

  运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。此外,Maven的插件机制是完全依赖Maven的生命周期的,因此理解生命周期至关重要。

3.3、Site生命周期

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

    1)site 生成项目的站点文档

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

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

  这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。

  

上一篇:Reflector反编译WinForm程序重建项目资源和本地资源


下一篇:对"一维最大子数组和"问题的思考(homework-01)