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 ...
随机推荐
- Nginx中并发性能相关配置参数说明
worker_processes:开启worker进程的数目,通常可设置为CPU核心的倍数.在不清楚的情况下,可设置成一倍于CPU核心数或auto(Nginx将自动发现CPU核心数). worker_ ...
- 如何将nupkg文件安装到VS2017
本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 开发工具:VS2017 系统:Win10 X64 一.首先在https://www.nuget ...
- COM学习(四)——COM中的数据类型
上一次说到,COM为了跨语言,有一套完整的规则,只要COM组件按照规则编写,而不同的语言也按照对应的规则调用,那么就可以实现不同语言间相互调用.但是根据那套规则,只能识别接口,并调用没有参数和返回类型 ...
- Windows程序设计学习笔记(四)自绘控件与贴图的实现
Windows系统提供大量的控件供我们使用,但是系统提供的控件样式都是统一的,不管什么东西看久了自然会厌烦,为了使界面更加美观,添加一些新的东西我们需要自己绘制控件. 控件在默认情况下并不进行自绘,如 ...
- MySQL数据类型转换函数CAST与CONVERT的用法
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: 1.CAST(value as type) 就是CAST(xxx AS 类型) 2 ...
- 在虚拟机中安装metasploit官方攻防模拟器
首先我们要在windwos下载安装perl环境.下载地址: http://pan.baidu.com/s/1i3GLKAp 然后我们安装 点击next 我同意,next next next,然后他会安 ...
- GDOI 2016 & APIO 2016 游记
缓慢施工中...... UPD:APIO游记已烂尾......因为Cu滚粗+生病一直没心情写..过了几天就发现APIO的事都快忘光了...去看KPM的就可以啦 今年apio竟然没和gdoi撞...智障 ...
- hdu_1028_母函数
虽然我很想自己写母函数讲解...但是最近事情太多了,就贴个很入门的讲解吧给出一个经典的模板A了这个题 http://blog.csdn.net/vsooda/article/details/79754 ...
- c++(数据选择)
在数学中,有一些数据选择的内容.举个例子来说,有这样一组数据:1.2.3.4.现在我们打算从中挑选出1个数据,那么有几种选择呢?结果应该是1.2.3.4:那么如果挑选2个数据呢,怎么选呢?那么结果应该 ...
- p2p项目,自己期望太高了。
在项目的进行中,主要牵扯到了一些安全方面的考虑,跟money相关的嘛,如果安全不考虑,你就惨了,一期呢,为了防止数据被篡改,主要对数据用dsa进行了签名,二期呢,考虑到das产生的字符串有可能太长,修 ...