- 先创建一个maven项目:
- 选择quikcstart:
- 填写相关配置
gruop id 和 artifact id 和version这三个元素定义了一个项目的基本坐标,在Maven的世界,任何的jar,pom或者war都是基于这些基本的坐标区分的。
Group Id:定义项目组
Artifact Id:定义了当前项目组中唯一的idVersion:顾名思义,指定当前的版本
- 生成的maven项目和pom.xml
- 接下来修改一下app.java的代码
![clipboard.png](/img/bV9ApR)package com.will.hello_world;/** * Hello world! * */public class App { public static void main( String[] args ) { System.out.println( new App().sayHello() ); } public String sayHello(){ return "Hello Maven!"; }}
此时,target目录下还是空的。
当我们右键项目,点击debug as -> maven clean,控制台会输出以下内容,这告诉我们,clean动作,maven会先清理输出目录target,即删除该目录。
此时,右键Pom.xml选择run as->maven build
goals输入compile,然后点击run,控制台此时会打出
说明maven已经执行了编译任务,并且把编译后的class文件放在了工作空间指定工作目录后的target目录下。
- 编写单元测试
编译完成后,我们要开始测试了,创建的maven项目已经集成了junit的依赖了,如果没有,可以自己手动添加后再执行maven update。
4.0.0 com.will hello-world 0.0.1-SNAPSHOT jar hello-world http://maven.apache.org UTF-8 junit junit 3.8.1 test
上述pom代码中还有scope属性,如果scope属性为test,表示该依赖只对测试有效。如果不声明依赖,那么该依赖对主代码和测试都有效。
有了测试依赖,就可以开始编写测试类了,在src/test/java目录下编写测试类
完成测试用例后,点击maven test,控制台输出以下内容,失败和警告都为0,说明我们的测试通过了。
- 打包和运行
将项目进行编译和测试之后,下一个重要步骤就是打包了,pom中没有指定打包的类型,使用默认的打包类型jar。
点击maven build->goals中填写package,点击run,eclipse就会帮我们进行打包了。
类似的,执行打包前,maven会自动的帮我们执行编译、测试等操作,可以看到,此时,我们已经将该项目打包成了hello-world-0.0.1-SNAPSHOT.jar的Jar包了,如果有需要的话,就可以复制这个Jar文件到其他项目的classpath文件中使用这个helloworld类了。
又或者你想在本地的其他maven项目中使用这个jar文件,此时你还需要执行一步操作,maven install,该指令会将输出的jar包安装到你本地的maven仓库中,其他maven项目就可以使用了。
- 运行jar文件
此时,我们在jar包所在的文件夹执行java -jar jar包名
报了如下错误
因为我们生成的jar包中是带有main方法的,带有main方法的类信息不会添加到mainfest中(可以使用解压工具查看Jar包)
此时我们可以用maven-shade-plugin插件,在pom.xml中添加如下代码
org.apache.maven.plugins maven-shade-plugin 2.4.1 package shade com.will.hello_world.App
再重新执行maven clean和maven build 选择package命令,在target目录下新增了一个jar包带有shade后缀,
此时执行java -jar x.jar
执行成功!