Maven--Maven 入门
1.POM
<?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>org.wzh.MavenDemo</groupId>
<artifactId>MavenDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>MavenDemo</name> </project>
代码的第一行是 XML 头,指定了该 xml 文档的版本和编码方式。
紧接着是 project 元素,project 是所有 pom.xml 的根元素,它还声明了一些 POM 相关的命名空间及 xsd 元素,虽然这些属性不是必须的,但使用这些属性能够让第三方工具(如 IDE 中的 XML 编辑器)帮助我们快速编辑 POM。
modelVersion 指定了当前 POM 模型的版本,对于 Maven2 及 Maven3 来说,它只能是4.0.0。
groupId 定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。譬如在 googlecode 上建立了一个名为 myapp的项目,那么 groupId 就应该是 com.googlecode.myapp,如果你的公司是 mycom,有一个项目为 myapp,那么 groupId 就应该是 com.mycom.myapp。
artifactId 定义了当前 Maven 项目在组中唯一的 ID。
version 指定了项目当前的版本。SNAPSHOT 意为快照,说明该项目还处在开发中,是不稳定的版本。
name 元素声明了一个对于用户更为友好的项目名称,虽然这不是必须的,但还是推荐为每个 POM 声明 name,以方便信息交流。
2.编写主代码
Maven 项目标准目录结构:
参考:http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
项目主代码和测试代码不同,项目的主代码会被打包到最终的构件中(如jar),而测试代码只在运行测试时用到,不会被打包。默认情况下,Maven 项目主代码位于
src/main/java 目录。
3.编写测试代码
为了使项目结构保持清晰,主代码与测试代码应该分别位于独立的目录中。Maven 项目中默认的测试代码目录是
src/test/java
JUnit 是事实上的单元测试标准。要使用 JUnit,需要添加 JUnit 依赖。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
scope 为依赖范围,若依赖范围为 test 则表示该依赖只对测试有效。如果不声明依赖范围,那么默认值就是 compile,表示该依赖对主代码和测试代码都有效。
在 Maven 执行测试(test)之前,它会自动执行项目主资源处理、主代码编译、测试资源处理、测试代码编译等工作,这是 Maven 生命周期的一个特性。
4.打包和运行
POM 中如果没有指定打包类型,使用默认打包类型 jar。
类似地,Maven 会在打包之前执行编译、测试等操作。
如果需要让其他的 Maven 项目直接引用这个 jar 包,还需要一个安装的步骤 mvn clean install。
只有将 打包之后的构件安装到本地仓库之后,其他 Maven 项目才能使用它。
默认打包生成的 jar 是不能够直接运行的,因为带有 main 方法的类信息不回添加到 manifest 中(打开 jar 文件中的 META-INF/MANIFEST.MF 文件,将无法看到 Main-Class 一行)。为了生成可执行的 jar 文件,需要借助 maven-shade-plugin,配置该插件如下。
<build>
<plugins>
<!-- shade插件打包成jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.wzh.maven.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
5.使用 Archetype 生成项目骨架
运行 mvn archetype:generate。紧接着会看到一段长长的输出,有很多可用的 Archetype 供选择,包括注明的 Appfuse 项目的 Archetype、JPA 项目的 Archetype 等。每一个 Archetype 前面都会对应有一个编号,同时命令行会提示一个默认的编号,其对应的 Archetype 为 maven-archetyoe-quickstart,直接回车选择该 Archetype,紧接着 Maven 会提示输入要创建项目的 groupId、artifactId、version 以及包名 package。Archetype 插件将根据我们提供的信息创建项目骨架。
Archetype 可以帮助我们迅速的构建起项目的骨架。如果有很多拥有类似的自定义的项目结构以及配置文件,则完全可以一劳永逸地开发自己的 Archetype,然后在这些项目中使用自定义的 Archetype 来快速生成项目框架。
Maven--Maven 入门的更多相关文章
- maven3实战之maven使用入门(使用archetype生成项目骨架)
maven3实战之maven使用入门(使用archetype生成项目骨架) ---------- maven提供了archetype以帮助我们快速勾勒出项目骨架.以Hello World为例,我们使用 ...
- Maven——快速入门手册(学习记录)
前言: 前段时间进行了一点maven的入门学习,在这里做个记录,希望能帮到一些正在学习的朋友们.maven版本为3.3.9.希望大家觉得好的点个赞,觉得不好的多提提意见和建议做个交流.这里也贴出我学习 ...
- (4)Maven快速入门_4在Spring+SpringMVC+MyBatis+Oracle+Maven框架整合运行在Tomcat8中
利用Maven 创建Spring+SpringMVC+MyBatis+Oracle 项目 分了三个项目 Dao (jar) Service (jar) Controller (web) ...
- (1)Maven快速入门_1maven安装
Maven 快速入门 1.1 Maven官网下载 windows 系统 下载 下图红色框选处. 下载到本地解压, 创建一个本地maven仓库的目录 maven_lib 配置Maven的环境变量 ...
- Java实战及解析 — Maven快速入门
五分钟快速入门 mvn --version mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -Darche ...
- Maven 学习(一)-Maven 使用入门
http://www.cnblogs.com/xdp-gacl/p/3498271.html http://www.cnblogs.com/xdp-gacl/p/4240930.html 一.Mave ...
- Maven系列学习(二)Maven使用入门
Maven使用入门 通过上一节的学习,我们已经了解和配置好了Maven,接下来需要编写代码了 1.POM(Project Object Model,项目对象模型) 和Make的Makefile类似,M ...
- Maven快速入门(一)Maven介绍及环境搭建
做开发的程序员都知道,在系统开发需要各自各样的框架.工具.其中有一种工具不管你是初级程序员还是高级程序员都必须熟练掌握的,那就是项目管理工具(maven.ant.gradle).接下来就总结Maven ...
- Maven快速入门(二)手动创建maven项目hellomaven
之前讲过Maven介绍及环境搭建,介绍了maven的作用和如何搭建maven环境.接下来就以一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,最后讲maven如 ...
- Maven快速入门(三)Maven的坐标和仓库
之前通过一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,然后讲maven如何编译运行项目.接下来介绍maven中几个比较重要的概念:坐标和仓库.Maven快速 ...
随机推荐
- mysql日期
查询当前时间 select now() 结果:2017-04-24 18:11:26 格式化当前日期 SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') 结果:2017-04- ...
- GRADLE依赖的统一管理
参考链接:http://stormzhang.com/android/2016/03/13/gradle-config/ 我想大部分人应该都在使用Gradle来依赖管理,还没有使用的去面壁思过,Gra ...
- Hibernate--(二)增删改查
1.增删改查: public class Test { public static void main(String[] args) { SessionFactory sf = new Configu ...
- 学术Essay写作中Introduction的正确打开方式
其实在学术essay写作过程中,很多留学生经常不知道如何写introduction,所以有些开头的模板句就出现了,比如,With the development of society/With the ...
- centos系统 通过命名查找需要安装哪个安装包 command not found
场景: 服务器未安装命令,但是我们需要使用,不知道该安装什么包,以sz命令为例 [root@localhost linshi]# sz tes.sh -bash: /usr/bin/sz: 没有那个文 ...
- 使用H5搭建webapp主页面
使用H5搭建webapp主页面 前言: 在一个h5和微信小程序火热的时代,作为安卓程序员也得涉略一下h5了,不然就要落后了,据说在简历上可以加分哦,如果没有html和css和js基础的朋友,可以自行先 ...
- Day 7:TreeSet
补充上一日:HashCode方法默认返回的是内存地址,String类已经重写了对象的HashCode方法 方法细节:取出数组中的值或字符串的值按照规定计算返回一个值,如果两个字符串内容一致就会返回相同 ...
- trove module使用说明
原文来自:https://github.com/openstack/openstack-manuals/blob/master/doc/user-guide/source/database-modul ...
- cat <<EOF> file
.多行导入文件(新建文件或者覆盖文件内容) cat << EOF > abcd.txt Hello! This is a test file! Test for cat and ...
- BZOJ 3170 [Tjoi2013]松鼠聚会
题解:切比雪夫距离转化为曼哈顿距离 枚举源点,横纵坐标互不影响,分开考虑,前缀和优化 横纵分开考虑是一种解题思路 #include<iostream> #include<cstdio ...