Maven 前奏
首先到Maven下载并解压Maven 点击打开链接
Maven 远程中央仓库地址,看完以下的操作你可以自己添加项目需要的jar包。 点击打开链接
配置环境变量
1.打开.bash_profile 添加以下配置:
export MAVEN_HOME="/Users/tim/apache-maven-3.5.3"
export PATH="$MAVEN_HOME/bin:$PATH
2.终端输入mvn -v 查看是否正常安装
构建基本JAVA项目
创建目录路径 src/main/java/hello,
在该目录下创建你的java文件 比如:HelloWorld.java和Greeter.java
src/main/java/hello/HelloWorld.java
package hello;
import org.joda.time.LocalTime;
public class HelloWorld {
public static void main(String[] args) {
LocalTime currentTime = new LocalTime();
System.out.println("The current local time is: " + currentTime);
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}
src/main/java/hello/Greeter.java
package hello;
public class Greeter {
public String sayHello() {
return "Hello world!";
}
}
创建Maven构建文件
打开项目hello文件夹,创建pom.xml文件(和src文件夹同级)
pom.mxl
<?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>org.springframework</groupId>
<artifactId>gs-maven</artifactId>
<packaging>jar</packaging>
<version>0.1.1</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>hello.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
<modelVersion>
POM模型版本(默认为4.0.0)<groupId>
该项目所属的组或组织。通常表示为公司相关域名<artifactId>
指定项目库的名称(例如,编译成JAR或WAR文件的名称)<version
正在构建的项目版本。<packaging>
- 打包的文件类型JAR文件打包默认为“jar”,WAR文件打包使用“war” 本地项目加载可配置为pom
Maven相关命令
mvn compile
编译Java文件,使用该命令把.java文件 编译成.class 文件。生成的目录在/target/classes/java/hello/
mvn package
使用该命令会如果pom.xml 的 packaging 来生成对应jar包或者war包。生成的目录在/target/
mvn install
把打包资源存储到本地仓库,maven首先会读取本地仓库是否有文件,然后再去远程中央仓库获取。
Maven添加项目依赖包
有了maven我们可以从远程中央仓库拉取对应的jar包,只需要在pom.xml添加配置。
现在我们在HelloWorld项目加一个时间类
package hello;
import org.joda.time.LocalTime;
public class HelloWorld {
public static void main(String[] args) {
LocalTime currentTime = new LocalTime();
System.out.println("The current local time is: " + currentTime);
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}
如果直接用mvn compile 来编译。肯定会报错,找不到对应的类。所以需要在pom.xml增加以下节点获取对应的类。这样我们就能顺利的编译通过。
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
<groupId>
远程版本库组名称。<artifactId>
远程版本库名称<version>
远程版本库版本号
可以在Maven远程中央仓库地址 找到你需要的库添加
Maven构建一个单元测试
创建对应文件 src/test/java/hello/GreeterTest.java
package hello;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.*;
import org.junit.Test;
public class GreeterTest {
private Greeter greeter = new Greeter();
@Test
public void greeterSaysHello() {
assertThat(greeter.sayHello(), containsString("Hello"));
}
}
同样需要在pom.xml 引入测试类的库
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
终端输入
mvn test
测试通过截图
最后给上完整的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>org.springframework</groupId>
<artifactId>gs-maven</artifactId>
<packaging>jar</packaging>
<version>0.1.1</version>
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>hello.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
例子参考:https://spring.io/guides/gs/maven/