Maven_入门

编写POM

Maven的核心是pom.xml,POM(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.0</modelVersion>

<groupId>com.ran.mvnbook</groupId>

<artifactId>hello-world</artifactId>

<version>1.0-SNAPSHOT</version>

<name>Maven laborMkt Project</name>

</project>

注:project是所有pom.xml的根元素

modelVersion指定了当前POM模板的版本,对于Maven2和Maven3来说,它只能是4.0.0

groupId定义了项目属于哪个组,这个组往往和所在组织和公司有关

artifactId定义了当前Maven项目在组中的唯一ID

version指定了HelloWorld项目当前的版本

编写主代码

src/main/java目录下

package com.ran.mvnbook.helloworld;

public class HelloWorld{

public String sayHello(){

return "hello maven";

}

public static void main(String[] args){

System.out.println(new HelloWorld().sayHello());

}

}

项目根目录下运行命令 mvn clean compile

clean 告诉Maven清理输出目录target/,默认情况下,Maven构建的所有输出都在target目录中,compile告诉Maven编译项目主代码

编写测试代码

src/test/java目录下

package com.ran.mvnbook.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);

}

}

修改POM代码,增添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.0</modelVersion>

<groupId>com.ran.mvnbook</groupId>

<artifactId>hello-world</artifactId>

<version>1.0-SNAPSHOT</version>

<name>Maven laborMkt Project</name>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.11</version>

<scope>test</scope>

</dependency>

</dependencies>

</project>

执行测试,运行 mvn clean test

打包和运行

打包运行mvn clean package

不过这种包为不可执行包需修改POM,增添maven-shade-plugin

<?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.ran.mvnbook</groupId>

<artifactId>hello-world</artifactId>

<version>1.0-SNAPSHOT</version>

<name>Maven laborMkt Project</name>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.11</version>

<scope>test</scope>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-shade-plugin</artifactId>

<version>2.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.ran.labor.helloworld.HelloWorld</mainClass>

</transformer>

</transformers>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

</build>

</project>

再次运行mvn clean package 

target下有两个jar包hello-world-1.0-SNAPSHOT.jar和original-hello-world-1.0-SNAPSHOT.jar,前者是带有Main-Class信息的可运行jar,后者为原始jar

运行java -jar hello-world-1.0-SNAPSHOT.jar 控制台输出hello maven

成功!

猜你喜欢

转载自mikzhang.iteye.com/blog/2028555