Maven目录结构
1.编写POM
目录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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ydc.ln.mvndemo</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.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.ydc.ln.mvn.helloworld.HelloWorld</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
2.编写主代码
目录:hello-world/src/main/java/com/ydc/ln/mvn/helloworld/HelloWorld.java
package com.ydc.ln.mvn.helloworld;
public class HelloWorld
{
public static void main(String[] args) {
System.out.println(new HelloWorld().sayHello());
}
public String sayHello() {
return "Hello Maven";
}
}
3.编写测试代码
目录hello-world/src/test/java/com/ydc/ln/mvn/helloworld/HelloWorldTest.java
package com.ydc.ln.mvn.helloworld;
import static org.junit.Assert.*;
import org.junit.Test;
import com.ydc.ln.mvn.helloworld.HelloWorld;
public class HelloWorldTest {
@Test
public void testSayHello() {
HelloWorld helloWorld = new HelloWorld();
String result = helloWorld.sayHello();
assertEquals("Hello Maven", result);
}
}
4.打包和运行(相关命令)
mvn clean
mvn clean compile
这是第一次运行时,Maven需要下载相关jar包,保存在 用户名\.m2\repository 文件夹下
这是Maven第二次运行该命令
mvn clean test
mvn clean package
mvn clean install [-U]
java -jar target\hello-world-1.0-SNAPSHOT.jar
以下命令
--查看当前项目已解析依赖
--具体看优化依赖
mvn dependency:list
mvn dependency:tree
mvn dependency:analyze
------------------------------------------------
简短总结:
解析pom.xml
modelVersion 指定了当前POM模型的版本,对于Maven2及Maven3来说,只能是4.0.0(不懂为什么)
groupId 网站+项目名,如:com.lnydc.mvndemo
artifactId 项目组中唯一ID,如: hello-world
version 版本,如: 1.0-SNAPSHOT
name 友好的项目名称,但不是必须的
dependencies 声明项目的依赖
scope 依赖范围 默认为compile,该依赖对主代码和测试代码都有效
中央仓库 http://repo1.maven.org/maven2/
maven类型
jar/pom/war
命令
mvn clean 清理输出目录target/
mvn clean compile 编译
mvn clean test 测试
mvn clean package 打包,生成jar包,命名规则:artifact-version.jar,也可以用finalName来自定义该文件的名称
mvn clean install [-U] 将项目输出的jar安装到了Maven本地仓库中,可心让本机的其它项目引用该jar包
java -jar target\hello-world-1.0-SNAPSHOT.jar
mvn dependency:list 分析项目依赖
mvn dependency:tree 列出项目的依赖树
mvn dependency:analyze 列出项目所有已解析的依赖
了解插件与插件目标,如:
clean:clean
resources:resources
compiler:compile
使用Archetype生成项目骨架
mvn archetype:generate 创建该项目的骨架,适用于Maven3,Maven2必须其他命令