Maven1-HelloWorld简单入门
编写POM(Project Object Model)
Maven项目的核心是pom.xml,它定义了项目的基本信息,用于描述项目如何构建,声明项目依赖
- 创建文件夹,名称为hello-world
- 创建pom.xml文件,位于根目录下
- 编辑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.xikunqu.firstmvn</groupId>
<artifactId>helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
</project>
解析:
- <??>中制定了xml文档的版本和编码方式
- 是文档的根元素,还声明了一些POM相关的命名空间以及xsd元素,使用这些属性可以让第三方工具帮助我们快速编辑POM
- groupId,artifactId和version定义了一个项目的基本坐标,在Maven中,任何jar,pom,war都是局域这些基本 坐标进行区分的
- grouId定义了项目属于哪个组,若googlecode上建立了一个myapp项目,groupld就应该是com.googlecode.myapp
- artifactId定义了当前Maven项目在组中唯一的ID
- version 制定了hello-world项目当前的版本
- name生命了一个对于用户更为友好的名称,不是必须的
编写主代码
项目主代码会被导播到最终的构建中,默认情况下,Maven假设项目主代码位于src/main/java目录下
- 创建src/main/java目录
在建好的目录下创建文件com/xikunqu/firstmvn/helloworld/HelloWorld.java
package.com.xikunqu.firstmvn.helloworld;
public class HelloWorld
{
public String sayHello(){
return "Hello World";
}
public stacic void main(String[] args){
System.out.print( new HelloWorld().sayHello());
}
}
执行编译:
mvn clean compile
运行结果如下:
编写测试代码
- 建立目录,src/test/java
- 由于要使用JUnit,所以先为项目添加一个JUnit依赖,修改pom.xml,添加如下代码
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
解析:
- dependencies元素下可以包含多个dependency元素以声明项目的依赖
- 这段声明可以使Maven 自动下载junit-4.7.jar
- scope为依赖范围,表明该依赖值对测试有效
- 编写测试类,测试sayHello()方法,检查其返回值,在src/test/java下创建文件HelloWorldTest.java
package com.xikunqu.firstmvn.helloworld;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class HelloWorldTest
{
@Test
public void testSayHello(){
HelloWorld helloworld=new HelloWorld();
String result=helloworld.sayHello();
assertEquals("Hello World",result);
}
}
- 执行编译:
mvn clean test
运行结果部分截图如下:
打包和运行
在项目进行编译,测试之后,下一重要步骤就是打包
- 执行命令:
mvn clean package
运行结果部分截图如下:
可以看到项目主代码被打包为一个名为helloworld-1.0-SNAPSHOT.jar的文件,位于target目录下。 目前为止,我们都没有运行HelloWorld项目,默认打包生成的jar是不能后直接运行的,因为带有main方法的类不会被添加到manifest中,为了生成可执行的jar文件,需要借助maven-shade-plugin,在pom.xml添加如下代码:
<build>
<plugins>
<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.xikunqu.firstmvn.helloworld.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
再次执行
mvn clean package,构建成功后,可以看见target目录下存在两个jar包,如下图所示:
- 执行jar文件,如下图所示:

Maven1-HelloWorld简单入门的更多相关文章
- Web Service简单入门示例
Web Service简单入门示例 我们一般实现Web Service的方法有非常多种.当中我主要使用了CXF Apache插件和Axis 2两种. Web Service是应用服务商为了解决 ...
- 一篇文章带你了解服务器操作系统——Linux简单入门
一篇文章带你了解服务器操作系统--Linux简单入门 Linux作为服务器的常用操作系统,身为工作人员自然是要有所了解的 在本篇中我们会简单介绍Linux的特点,安装,相关指令使用以及内部程序的安装等 ...
- 用IntelliJ IDEA创建Gradle项目简单入门
Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...
- [原创]MYSQL的简单入门
MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...
- Okio 1.9简单入门
Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...
- emacs最简单入门,只要10分钟
macs最简单入门,只要10分钟 windwiny @2013 无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
- Docker 简单入门
Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- git简单入门
git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...
随机推荐
- 搭建CAS服务器,并实现一个简单的单点登录的demo
官网:http://jasig.github.io/cas/Cas Server下载:http://developer.jasig.org/cas/Cas Client下载:http://develo ...
- angular4.0微信oAuth第三方认证的正确方式
当我们的项目运行在微信端时,用到oAuth第三方认证.问题来了,在ng4中微信认证应该放在哪里呢? 开始项目的时候,我将oAuth认证放在了每个页面模版中,发现返回历史页的时候,需要返回两次. 这个问 ...
- 基于SpringBoot开发一个Restful服务,实现增删改查功能
前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...
- FFmpeg AVPacket
AVPacket注解 AVPacket 是一个结构体,存储压缩数据.可作为编码器的输出,解码器的输入. 对于 Video 一般包含一个压缩帧,对于 Audio 可能包含多个压缩帧. 编码器允许输出空 ...
- [异常解决] 奇巧淫技——VirtualBox中的linux无显示启动,并在win7上远程控制
楼主是资深技术宅(癖),由于感觉手上的老笔记本太卡,遂狠心买了个性能至强的主机同时配了个投影仪(满足躺着打代码的意淫场景).但是体验了大概一个月发现还是坐着打代码舒服,但是如下图坐着打代码总是要抬头看 ...
- 局域网中间人:MITMf使用
系统环境:kali 安装流程参考github官方地址:https://github.com/byt3bl33d3r/MITMf/wiki/Installation 安装相关依赖: apt--dev l ...
- C#学习笔记-工厂模式
题目:计算器 解析:工厂方法(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类. 定义运算类: class Operation { ; ; public doubl ...
- 定义一个数,它可能为正 也可能为负 var num = Math.pow(-1,parseInt(Math.random() * 2) + 1);
// 定义一个随机数范围从0 ~页面宽度 var x = parseInt(Math.random() * myCanvas.width); // 定义一个随机数 范围从0 ~页面高度 var y = ...
- 针对Oracle的审计方案
主题:针对Oracle的审计方案 数据库环境:Oracle 11g 数据库审计需求: 1.需要对连接数据库的行为进行审计 2.需要对核心表的DML操作进行审计 3.需要迁移审计数据到指定表空间 4.需 ...
- echarts饼图点击事件
/** * 点击事件 */myChart2.on('click', function (param) { var index = param.dataIndex; alert(index);});