实战1:基础实战
第一步:新建如下目录
package com.java.world.helloworld; public class HelloWorld{ public void sayHello(){ System.out.println("maven,hello wordl!"); } } |
第二步:新建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" > <!-- project标签是所有POM.XML的根元素,它声明了一些POM相关的命名空间及xsd元素。--> <modelVersion>4.0.0</modelVersion> <!-- modelVersion指定当前POM模型的版本,如果安装的是Maven2或者Maven3,那么这个值只能是4.0.0 --> <groupId>com.java.world</groupId> <!-- groupId是项目的唯一标识符,一般使用全限定的包名来区分该项目和其他项目,并且构建时生成的路径也是由此生成 --> <artifactId>helloworld</artifactId> <!-- artifactId是构件标识符,和groupId一起来唯一标识一个构件,不能有2个不同的项目同时拥有同样的groupId和artifactId 在某个特定的groupId下,artifactId必须是唯一的。 --> <!-- 构件是项目产生或使用的一种东西,Maven为项目产生的构件包括:jar包、源码、二进制发布和部署包WAR等 --> <version>1.0</version> <!-- version是项目当前的版本,格式为:主版本.次版本.增量版本-限定版本号 --> <packaging>jar</packaging> <!-- packaging项目产生的构件类型,如jar,war,ear,pom等 --> <name>MavenWorld</name> <!-- name是项目名称,Maven产生的文档使用,非必需 --> <url>http://www.ansq.com</url> <!-- url是项目主页的URL,Maven产生的文档使用,非必需 --> </project> |
第三步:打开命令窗口
按住shift,右击鼠标,选择:在此处打开PowerShell窗口,输入:mvn clean compile
注意:
①C:\Users\XXX\.m2,执行命令之前是0KB,执行完之后是5.19 MB,而安装目录始终还是10.7 MB,这说明下载的jar包都放在了m2目录下。
②整个执行过程耗时很久,其需要从maven中央仓库下载jar包,否则m2也不会5MB多,整个过程耗时很久,我这里只借去了开头、结尾的截图。
③在D:\Maven_Intellij_Space目录下自动生成了target目录。
④由于Maven的所有工作都是交由插件来完成的,因此clean、compile命令也是分别交给maven-clean-plugin、maven-compiler-plugin来完成的,可以查看插件信息:
C:\Users\XXXXX\.m2\repository\org\apache\maven\plugins\maven-clean-plugin
C:\Users\XXXXX\.m2\repository\org\apache\maven\plugins\maven-compiler-plugin
第四步:单元测试JAVA文件
按照如下创建目录和JAVA文件
package com.java.world.helloworld; import org.junit.Test; public class HelloTest{ @Test public void testHello(){ HelloWorld hw = new HelloWorld(); hw.sayHello(); } } |
然后,在POM.XML引入org.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/xsd/maven-4.0.0.xsd" > <!-- project标签是所有POM.XML的根元素,它声明了一些POM相关的命名空间及xsd元素。--> <modelVersion>4.0.0</modelVersion> <!-- modelVersion指定当前POM模型的版本,如果安装的是Maven2或者Maven3,那么这个值只能是4.0.0 --> <groupId>com.java.world</groupId> <!-- groupId是项目的唯一标识符,一般使用全限定的包名来区分该项目和其他项目,并且构建时生成的路径也是由此生成 --> <artifactId>helloworld</artifactId> <!-- artifactId是构件标识符,和groupId一起来唯一标识一个构件,不能有2个不同的项目同时拥有同样的groupId和artifactId 在某个特定的groupId下,artifactId必须是唯一的。 --> <!-- 构件是项目产生或使用的一种东西,Maven为项目产生的构件包括:jar包、源码、二进制发布和部署包WAR等 --> <version>1.0</version> <!-- version是项目当前的版本,格式为:主版本.次版本.增量版本-限定版本号 --> <packaging>jar</packaging> <!-- packaging项目产生的构件类型,如jar,war,ear,pom等 --> <name>MavenWorld</name> <!-- name是项目名称,Maven产生的文档使用,非必需 --> <url>http://www.ansq.com</url> <!-- url是项目主页的URL,Maven产生的文档使用,非必需 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> <!-- scope代表了插件的应用环境范围,例如:如果是test,则只有位于src/test/java目录下的程序能够访问并使用;其他目录下的JAVA程序访问时,会产生编译错误 --> </dependency> </dependencies> <!-- dependencies表示多处依赖 --> </project> |
第五步:运行基于test的mvn命令
使用:mvn clean test
跟之前一样,从Maven中央仓库下载junit插件,可以通过这个目录查看:C:\Users\XXXXXX\.m2\repository\junit\junit\4.7
然后在target目录下新创建了test-classes目录:
注意:
main里面的源文件编译后放在target/classes目录下
test里面的源文件编译后放在target/test-classes目录下
第六步:打jar包
mvn clean package
同样的,也是从Maven中央仓库下载插件,可以通过这个目录查看:C:\Users\XXXXX\.m2\repository\org\apache\maven\plugins\
maven-jar-plugin
最后,我们发现在target根目录下有个helloworld-1.0.jar,该文件的命名是由POM.XML中的<artifactId/>-<version/>.jar拼接而成:
然后我们打开jar文件,发现:测试的JAVA文件并不参与打过过程:
第七步:把生成的JAR发布到本地Maven仓库
mvn clean install
同样的,也是从Maven中央仓库下载插件,可以通过这个目录查看:C:\Users\XXXX\.m2\repository\org\apache\maven\plugins\
maven-install-plugin
至于我们的JAR到底在哪里呢,可以查看这个目录:C:\Users\XXXXX\.m2\repository\com\java\world\helloworld\1.0,该目录下有3个文件:
helloworld-1.0.jar
_remote.repositories
helloworld-1.0.pom(内容就是pom.xml里面的内容)