maven的入门hello world
编写pom
pom.xml是maven的核心。Project Object Model,定义了项目的基本信息,用于描述项目如何构建,项目依赖等。
首先,新建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.</modelVersion>
<groupId>com.test</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
</project>
xml头指定xml版本和编码方式,project元素是pom.xml的根元素,modelVersion指定了当前POM的版本。
groupId定义项目属于哪个组,这个组往往和项目所在的组织或公司有关联。如果公司是mycom,项目名是myapp,groupId应该是com.mycom.myapp
artifactId定义了当前Maven项目在组中唯一的ID,我们这个helloworld项目的定义为hello-world,你可以为不同的子模块分配artifactId,如myapp-util、myapp-domain等。
version指定了版本
SNAPSHOT意为”外照“,说明项目还在开发中,不稳定版本
maven的java代码几点注意:
1、应该把项目主代码放在src/main/java/目录下(约定)
2、java类的包名和pom中定义的groupId和artifactId吻合。
编写java代码:com/test/helloworld/HelloWorld.java
package com.test.helloworld;
public class HelloWorld {
public String sayHello (){
return "Hello Maven";
}
public static void main (String[] args){
System.out.println( new HelloWorld().sayHello() );
}
}
使用maven进行编译。
在项目根目录运行:mvn clean compile
项目根目录(我这里是在hello-world文件夹下)
1、clean告诉maven清除target
2、执行resource。resource任务(demo中没有定义项目资源,略过)
3、compile:compile编译,讲项目主代码编译至target/classess目录
clean和resource和compile对应一些maven插件以及插件目标
测试。
主代码与测试代码应该位于独立的目录中,主代码目录默认是src/main/java,测试代码目录默认是src/test/java
测试java:hello-world\src\test\java\com\test\helloworld\HelloWorldTest.java
package com.test.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 Maven",result);
} }
我们写单元测试用到了junit,所以需要在pom.xml中添加junit依赖
<?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.</modelVersion>
<groupId>com.test</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
代码中添加了dependencies元素,元素中包含多个dependency声明项目依赖。dependency中有groupId、artifactId等坐标
scope元素表示依赖范围,scope为test表示该依赖只对测试有效,默认值为compile,表示对主代码和测试代码有效。
mvn clean test测试
mvn clean package打包
上面的Helloworld中没有指定打包类型,使用默认打包类型jar。生成一个命名规则为artifactId+version的jar文件,如果需要自定义命名可以用finalName。打包的文件存放在target中。
默认打包的jar是不能让其他maven项目也使用的。
mvn clean install
将项目自动打包并安装在本地maven仓库中,让其他项目可以像junit一样下载使用。
默认打包的jar是不包含main方法的类的。我们可以配置插件:
<?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.</modelVersion>
<groupId>com.test</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.</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>
</execution>
</executions>
</plugin>
</plugins> </build> </project>
这样的话mvn clean install会生成两个jar,符合默认命名的是含有main类的。前缀是original的是不包含的。
使用java命令可以执行测试。
maven的入门hello world的更多相关文章
- 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快速 ...
随机推荐
- java虚拟机(一)——内存管理机制与OOM异常
一 java内存区域与内存溢出异常(OOM) 1)运行时数据区域划分 1.程序计数器(Program Conuter Register) 程序计数器是一块较小的内存空间,它是当前线程执 ...
- 2016最全的web前端面试题及答案整理
面试web前端开发,不管是笔试还是面试,都会涉及到各种专业技术问题,今天小编整理了一些常见的web前端面试题及答案,希望对大家有所帮助. 1.常用那几种浏览器测试?有哪些内核(Layout Engin ...
- java视频格式转换代码
http://blog.163.com/zzf_fly/blog/static/20958915820127217443816/ package com.gkzx.online.action; imp ...
- linux笔记:linux系统安装-vmware虚拟机安装
vmware版本:vmware8(百度云里备份了安装程序VMware_Workstation_wmb.zip) vmware软件安装过程: 1.在百度云中下载安装程序压缩包VMware_Worksta ...
- 1.2 认识ASP.NET MVC项目结构
1.开发环境 操作系统:xp.vista.windows 7.windows 8.windows server 2003|2008|2008R2|2012: 集成开发环境IDE: Vsiual Stu ...
- Nodejs开发框架Express3.0开发手记–从零开始
转载请注明出处: http://blog.fens.me/nodejs-express3/ 程序代码已经上传到github有需要的同学,自行下载. https://github.com/bsspiri ...
- DSP - Bootloader学习笔记2
DSP - Bootloader学习笔记2 彭会锋 1 本文主要以F2812为例进行说明的: F28027内部资源 F28027内存映射
- HTML5自学笔记[ 24 ]canvas绘图之星空草地
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- nyoj------79拦截导弹
拦截导弹 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到 ...
- IntelliJ IDEA 中properties中文显示问题