2019独角兽企业重金招聘Python工程师标准>>>

一. 概述

开始maven的hello world项目。

二. 编写pom

就像Make的Makefile, Ant的build.xml一样,Maven项目的核心是pom.xml。POM(Project Object Model)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

现在先为Hello World项目编写一个最简单的pom.xml。

首先创建一个名为hello-world的文件夹,在该文件夹中新建一个pom.xml的文件,文件内容如下:

<?xml version=”1.0” encoding=”UTF-8”?>  <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.juvenxu.mvnbook</grouId>  <artifactId>hello-world</artifactId>  <version>1.0-SNAPSHOT</version>  <name>Maven Hello World Project</name>
</project>

project 元素是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素,虽然这些属性不是必须的,但使用这些属性能够让第三方工具(如IDE中的XML编辑器)帮助我们快速编辑POM。

modelVersion指定了当前POM模型的版本,对于Maven2及Maven3来说,它只能是4.0.0。

groupId,artifactId和version三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jar、pom或者war都是以基于这些基本的坐标进行区分的。groupId定义了项目属于哪个组,这个组往往和项目所在组织或公司关联。如com.googlecode.myapp或 com.mycom.myapp。artifactId定义了当前Maven项目在组中唯一的的ID,如myapp-util或myapp-domain等等。Version是定了项目的当前版本,如1.0-SHNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。

三. 编写主代码

项目主代码和测试代码不同,项目的主代码会被打包到最终的构建中(如jar)。

默认情况下,Maven假设项目主代码位于src/main/java目录。Maven会自动搜寻该目录找到项目主代码。一般来说,项目中Java类的包都应该基于项目的groupId和artifactId,这样更加清晰,更加符合逻辑,也方便搜索。

四. 编译源代码

在项目根目录下运行 mvn clean compile 可以执行项目的清理和编译任务。Maven会先执行clean:clean任务(clean插件的clean目标),删除target/目录,默认情况下Maven构建的所有输出都在target/目录中;接着执行resources:resources任务;最后执行compiler:compile任务,将项目主代码编译至target/classes目录。

五. 编写测试代码

Maven项目中默认的测试代码目录是src/test/java。要使用Junit,需要在POM中添加相关依赖:

<dependencies>  <dependency>  <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>4.7</version>  <scope>test</scope>  </dependency>
</dependencies>

有了这段声明,Maven就能自动从中央仓库(http://repo1.maven.org/maven2)下载junit-4.7.jar了。

scope 指定了依赖范围。test表示该依赖只对测试有效(只有测试代码可以import JUnit)。scope默认值是compile表示对主代码和测试代码都有效。

六. 执行测试

mvn clean test 会执行clean:clean、resources:resources、compiler:compile、resources:testResources、compiler:testCompile以及surefire:test。 Maven会在执行test之前执行resources:resources、compiler:compile、resources:testResources以及compiler:testCompile。(项目主资源处理,主代码编译,测试资源处理,测试代码编译等工作)。

Maven的核心插件之一compiler插件默认只支持编译Java1.3,因此我们需要在POM中配置该插件使其支持Java 5。

<build>  <plugins>  <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-compiler-plugin</artifactId>  <configuration>  <source>1.5</source>  <target>1.5</target>  </configuration>  </plugin>  </plugins>
</build>

测试代码通过编译之后会在target/test-classes下生成二进制文件。surefire是Maven世界中负责执行测试的插件。

七. 打包和运行

我们可以执行mvn clean package进行打包,如果不指定打包类型,使用默认的jar。jar:jar会将项目主代码的二进制文件夹打成包以artifact-version.jar的命名规范出现在target/输出目录中。

执行mvn clean install将项目输出的jar安装到Maven本地仓库中,在此之前会执行jar:jar,然后再执行install:install。

默认打包生成的jar是不能直接运行的,因为带有main方法的类信息不会添加到manifest中(打开jar文件中的META-INF/MANIFEST.MF文件,将无法看到Main-Class一行)。为了生成可执行的jar包,我们需要借助maven-shade-plugin,在POM中配置如下:

<plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-shade-plugin</artifactId>  <version>1.2.1</version>  <executions>  <execution>  <phase>package</phase>  <goals>  <goal>shade</goal>  </goals>  <configuration>  <transformers>  <transformer implementation=”org.apache.maven.plugins.shade.resource.ManifestResourceTransformer”>            <mainClass>com.juvenxu.mvnbook.helloworld.HelloWorld</mainClass>  </transformer>  </transformers>  </configuration>  </executions>
</plugin>

八. 使用Archetype生成项目骨架

我们称项目的基本目录结构(主代码目录、测试代码目录等)和pom.xml文件内容为项目的骨架。我们可以用mvn archetype:generate来生成项目的骨架。该命令在Maven 2中是不安全的,因为它会自动下载最新的archetype插件版本,可能得到不稳定的SNAPSHOT版。然而在Maven 3中,即使用户没有指定版本,Maven也只会解析最新的稳定版本。Maven 2中建议使用
mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate 
冒号的分隔格式为:groupId:artifactId:version:goal。 org.apache.maven.plugins是Maven官方插件的groupId。

创建普通java项目:

mvn archetype:create –DgroupId=com.heimar –DartifactId=JavaPro

创建web项目:

mvn archetype:create –DgroupId=com.heimar –DartifactId=WebPro –DarchetypeAtrifactId=mave-archetype=webapp

九. m2eclipse简单使用

1. 导入maven项目

2. 创建maven项目

3. 运行mvn命令

转载于:https://my.oschina.net/hongdengyan/blog/150595

3,maven使用入门相关推荐

  1. Maven系列学习(二)Maven使用入门

    Maven使用入门 通过上一节的学习,我们已经了解和配置好了Maven,接下来需要编写代码了 1.POM(Project Object Model,项目对象模型) 和Make的Makefile类似,M ...

  2. Maven - 基础入门与安装配置

    Maven - 基础入门与安装配置 [1]Maven基础入门 Maven的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件来完成.而插件本身并不包含在Maven的核心程序中. 当我们 ...

  3. 使用IntelliJ IDEA 配置Maven(入门)

    使用IntelliJ IDEA 配置Maven(入门) 下载Maven 官方地址:http://maven.apache.org/download.cgi 下载 解压并新建一个本地仓库文件夹 解压新建 ...

  4. maven学习:maven 的入门

    2.maven 的入门 到目前为止,我们已经大概了解并安装好了Maven,现在,我们开始创建一个最简单的Hello World项目. 2.1 在Idea创建maven项目 创建一个Maven项目也十分 ...

  5. 开发工具篇第三讲:Maven从入门到实战

    本文是开发工具篇第三讲:maven 从入门到实战 文章目录 1.什么是maven? 2.Maven能为我们解决什么问题? 3.说说maven有什么优缺点? 4.什么是Maven的坐标? 5.讲一下ma ...

  6. Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教、用户、管理员)+可以用于学习SSM框架、javaweb、maven项目入门

    Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教.用户.管理员)+可以用于学习SSM框架.javaweb.maven项目入门 可以用于课程设计.毕业设计的知识点入门学 ...

  7. SSM通用活动报名系统(会员、管理员)+SSM框架+mysql+tomcat+Maven项目(毕设学习)可以用于学习SSM、maven项目入门

    SSM通用活动报名系统(会员.管理员)+SSM框架+mysql+tomcat+Maven项目(毕设学习)可以用于学习SSM.maven项目入门 可以用于课程设计.毕业设计的知识点入门学习 提示:此资源 ...

  8. 使用IDEA创建Maven项目和Maven使用入门(配图详解)

    本文详解的讲解了使用IDEA创建Maven项目,及Maven的基础入门. 1.打开IDEA,右上角选择File->New->Project 2.如图中所示选择Maven(可按自己所需添加, ...

  9. 【Maven从入门到精通】 01-自动化构建工具:Maven

    笔记来源:Maven零基础入门教程(一套轻松搞定maven工具) 文章目录 自动化构建工具:Maven 1.Maven 到底是啥? 2.什么是构建? 3.构建过程中的各个环节 4.自动化构建 5.安装 ...

  10. 【Maven】Maven安装入门教程笔记

    Maven入门(含实例教程)_小宝鸽的博客-CSDN博客_maven ​​​​​​史上最详细的Maven安装教程_chenxiky的博客-CSDN博客_maven安装教程 Maven的简单介绍: Ma ...

最新文章

  1. java try catch_异常处理,JAVA中异常处理的介绍
  2. python语法教程-Python语言的核心语法(1)(语法教程)(参考资料)
  3. Ajax+Python flask实现上传文件功能
  4. WWDC 2014 Session笔记 - 可视化开发,IB 的新时代
  5. 深入Java类型信息:RTTI和反射
  6. Oracle B-tree、位图、全文索引三大索引性能比较及优缺点汇总(转载)
  7. 面对1.3 亿用户数据泄露,企业如何围绕核心数据构建安全管理体系?
  8. 电脑键盘上每个键的作用_键盘F键有什么作用 键盘F键作用介绍【详解】
  9. 硬软链接的区别 节点 以及重定向和管道
  10. zotero文献管理工具的下载安装
  11. 关于计算机听课如何做笔记,学霸听课怎么记笔记?5个笔记秘诀,帮你提高听课效率,完成逆袭...
  12. 【69】Sqrt(x)
  13. Micropython——使用PS2手柄实现远程遥控
  14. 使用tf2的saved_model进行推理
  15. office word 文件未找到:MathPage.WLL
  16. Ubuntu输入法使用回车键后字符间距异常的问题
  17. 如何开会——高效会议八项原则
  18. 小白如何成长为一名黑客
  19. 3dmax怎么渲染全景图,如何使用vray渲染制作360度全景图?
  20. 游戏服务器里怎么看在线人数,数据大佬统计服务器在线人数 来看看哪区最鬼...

热门文章

  1. mysql注入 outfile_Mysql注入中的outfile、dumpfile、load_file函数详解
  2. Java学习day011(oop):
  3. PlayMaker的特殊事件FINISHED
  4. 网络防嗅探工具SniffJoke
  5. 内存储器和cpu一起构成了计算机,计算机系统的组成
  6. android socket 收不到数据,android Socket服务端接收客户端数据问题
  7. php直接修改excel,php如何修改excel
  8. 马斯克的脑机接口公司Neuralink最新进展:让猴子也玩游戏
  9. 基于深度学习的脑电图识别 综述篇(三)模型分析
  10. 中国如何赢得新一轮超算竞赛?关键在向数据密集型超算转变