编写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的更多相关文章

  1. maven3实战之maven使用入门(使用archetype生成项目骨架)

    maven3实战之maven使用入门(使用archetype生成项目骨架) ---------- maven提供了archetype以帮助我们快速勾勒出项目骨架.以Hello World为例,我们使用 ...

  2. Maven——快速入门手册(学习记录)

    前言: 前段时间进行了一点maven的入门学习,在这里做个记录,希望能帮到一些正在学习的朋友们.maven版本为3.3.9.希望大家觉得好的点个赞,觉得不好的多提提意见和建议做个交流.这里也贴出我学习 ...

  3. (4)Maven快速入门_4在Spring+SpringMVC+MyBatis+Oracle+Maven框架整合运行在Tomcat8中

    利用Maven 创建Spring+SpringMVC+MyBatis+Oracle 项目 分了三个项目  Dao   (jar)   Service (jar)   Controller (web) ...

  4. (1)Maven快速入门_1maven安装

    Maven 快速入门 1.1 Maven官网下载     windows 系统 下载 下图红色框选处. 下载到本地解压, 创建一个本地maven仓库的目录 maven_lib 配置Maven的环境变量 ...

  5. Java实战及解析 — Maven快速入门

    五分钟快速入门 mvn --version mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -Darche ...

  6. Maven 学习(一)-Maven 使用入门

    http://www.cnblogs.com/xdp-gacl/p/3498271.html http://www.cnblogs.com/xdp-gacl/p/4240930.html 一.Mave ...

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

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

  8. Maven快速入门(一)Maven介绍及环境搭建

    做开发的程序员都知道,在系统开发需要各自各样的框架.工具.其中有一种工具不管你是初级程序员还是高级程序员都必须熟练掌握的,那就是项目管理工具(maven.ant.gradle).接下来就总结Maven ...

  9. Maven快速入门(二)手动创建maven项目hellomaven

    之前讲过Maven介绍及环境搭建,介绍了maven的作用和如何搭建maven环境.接下来就以一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,最后讲maven如 ...

  10. Maven快速入门(三)Maven的坐标和仓库

    之前通过一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,然后讲maven如何编译运行项目.接下来介绍maven中几个比较重要的概念:坐标和仓库.Maven快速 ...

随机推荐

  1. jQuery中其他

    hide:  隐藏 $('img').hide(); show:显示 $('img').show(); 单选多选下拉菜单 选中状态checked ($('.radio:checked')); 单选 ( ...

  2. Linux 打包和压缩 方法详解

    一般基因组的数据都非常大,所以都会 打包 压缩 后进行传输,拿到数据后的第一步必然就是要 解包 和 解压缩. 基本常识 首先要弄清两个概念:打包 和 压缩. 打包 是指将一大堆文件或目录变成一个总的文 ...

  3. map 后 PE 蓝屏原因专题讨论(e820cycles参数)

    map 后 PE 蓝屏原因专题讨论(e820cycles参数)http://bbs.znpc.net/thread-6182-1-5.html不点发表于 2011-12-8 11:42:31 大家知道 ...

  4. jq实现全选非全选

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. HTML5自学笔记[ 4 ]js中新增的选择器方法

    querySelector():参数与jQuery一样,这个方法获取一组元素中的第一个元素. querySelectorAll():获取一组元素. getElementsByClassName():获 ...

  6. java 多线程——quartz 定时调度的例子

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  7. MATLAB 矩阵转化为灰度图

    A=[ 1.00 0.96 0.98 0.88 0.94 0.61 0.96 0.80 0.98 0.89 0.96 1.00 0.94 0.90 0.95 0.71 0.96 0.83 0.90 0 ...

  8. uva 10118

    10118 - Free Candies Time limit: 30.000 seconds Little Bob is playing a game. He wants to win some c ...

  9. 推荐cms

    推荐cms : 国外:drupal  joomla wordpress 国内:phpcms

  10. [转]C# 应用程序安装部署步骤,安装前操作,先退出程序后卸载。

    1. 点击[文件]-[新建]-[项目]-其他项目类型-安装和部署,选择安装项目,在下面的名称栏填写SetupTest(或者选择安装向导,一直点击[下一步])2. 安装项目----六个子项依次为:文件系 ...