• 先创建一个maven项目:

clipboard.png

  • 选择quikcstart:

clipboard.png

  • 填写相关配置

gruop id 和 artifact id 和version这三个元素定义了一个项目的基本坐标,在Maven的世界,任何的jar,pom或者war都是基于这些基本的坐标区分的。

Group Id:定义项目组
Artifact Id:定义了当前项目组中唯一的id
Version:顾名思义,指定当前的版本

clipboard.png

  • 生成的maven项目和pom.xml

clipboard.png

  • 接下来修改一下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目录下还是空的。

clipboard.png

当我们右键项目,点击debug as -> maven clean,控制台会输出以下内容,这告诉我们,clean动作,maven会先清理输出目录target,即删除该目录。

clipboard.png

此时,右键Pom.xml选择run as->maven build

clipboard.png
goals输入compile,然后点击run,控制台此时会打出

clipboard.png
说明maven已经执行了编译任务,并且把编译后的class文件放在了工作空间指定工作目录后的target目录下。

  • 编写单元测试

编译完成后,我们要开始测试了,创建的maven项目已经集成了junit的依赖了,如果没有,可以自己手动添加后再执行maven update。

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.will</groupId>
  <artifactId>hello-world</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>hello-world</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>



上述pom代码中还有scope属性,如果scope属性为test,表示该依赖只对测试有效。如果不声明依赖,那么该依赖对主代码和测试都有效。

有了测试依赖,就可以开始编写测试类了,在src/test/java目录下编写测试类

clipboard.png

完成测试用例后,点击maven test,控制台输出以下内容,失败和警告都为0,说明我们的测试通过了。

  • 打包和运行

将项目进行编译和测试之后,下一个重要步骤就是打包了,pom中没有指定打包的类型,使用默认的打包类型jar。
点击maven build->goals中填写package,点击run,eclipse就会帮我们进行打包了。

clipboard.png

类似的,执行打包前,maven会自动的帮我们执行编译、测试等操作,可以看到,此时,我们已经将该项目打包成了hello-world-0.0.1-SNAPSHOT.jar的Jar包了,如果有需要的话,就可以复制这个Jar文件到其他项目的classpath文件中使用这个helloworld类了。

又或者你想在本地的其他maven项目中使用这个jar文件,此时你还需要执行一步操作,maven install,该指令会将输出的jar包安装到你本地的maven仓库中,其他maven项目就可以使用了。

  • 运行jar文件

此时,我们在jar包所在的文件夹执行java -jar jar包名
报了如下错误

clipboard.png

因为我们生成的jar包中是带有main方法的,带有main方法的类信息不会添加到mainfest中(可以使用解压工具查看Jar包)

此时我们可以用maven-shade-plugin插件,在pom.xml中添加如下代码

<build>  
    <plugins>  
        <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-shade-plugin</artifactId>  
            <version>2.4.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.will.hello_world.App</mainClass>  
                            </transformer>  
                        </transformers>  
                    </configuration>  
                </execution>  
            </executions>  
        </plugin>    
    </plugins>  
</build>


再重新执行maven clean和maven build 选择package命令,在target目录下新增了一个jar包带有shade后缀,
clipboard.png

此时执行java -jar x.jar

clipboard.png

执行成功!


Will
0 声望0 粉丝

不会前端的Java不是好程序猿!


下一篇 »
Linux基本命令