标准目录结构
my-app
|- src
|-main 主要的工程源文件
|–bin 脚本库
|–java java源代码文件(java文件夹下面的目录为项目的包,如:com.yyoo.appName.util等)
|–resources 资源库,会自动复制到classes目录里
|–filters 资源过滤文件
|–assembly 组件的描述配置(如何打包)
|–config 配置文件
|–webapp web应用的目录。WEB-INF、css、js等
|-test 测试文件
|–java 单元测试java源代码文件(文件路径和main下一致)
|–resources 测试需要用的资源库
|–filters 测试资源过滤库
|-site Site(一些文档,项目站点文件)
|- target 是有存放项目构建后的文件和目录,jar包、war包、编译的class文件等。target里的所有内容都是maven构建的时候生成的
|-LICENSE.txt Project’s license
|-README.txt Project’s readme
|-pom.xml
创建HelloWorld的目录结构
先在D:\根路径下建立文件夹,my_app_maven,名称可以任意取,以后的所有使用maven管理构建的项目都放在这个文件夹下,再在这个文件夹下创建hello_maven文件夹,此文件夹的名称即为我们HelloWorld程序的项目名称,接下来按如下创建文件夹
hello_maven
|- src
|-main
|–java
|-com
|-yyoo
|-maven01
|-HelloWorld.java
|-test
|- target 运行mvn compile后会自动生成,运行mvn clean后会自动删除,无须我们手动维护
|-pom.xml
pom.xml文件内容
<?xml version="1.0" encoding="UTF-8"?>
<!-- maven的schema -->
<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">
<!-- 固定写法,model的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- groupId:组id,公司网址的反写+项目名称。如下:com.yyoo是公司名称,maven01是项目名称 -->
<groupId>com.yyoo.maven01</groupId>
<!-- artifactId:项目id,实际对应项目的名称-模块名称 此名称和mvn package、mvn install 生成后的文件有关系-->
<artifactId>hello-maven</artifactId>
<!-- version:版本号,SNAPSHOT表示快照版本 -->
<version>SNAPSHOT-0.0.1</version>
<!--我们不使用junit
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
-->
</project>
编译mvn compile、打包 mvn package、执行java -cp
- 编译 在cmd命令窗口,进入D:\my_app_maven\hello_maven文件夹
在此路径下执行D:\my_app_maven\hello_maven>mvn compile,maven将编译代码,并将代码放入target文件夹
出现如图所示,表示编译成功
target文件夹的内容,编译后的文件放在classes文件夹中
- 打包:在命令窗口执行,D:\my_app_maven\hello_maven>mvn package。执行后会在target文件夹下出现hello-maven-SNAPSHOT-0.0.1.jar包,(jar的包名就是artifactId+version.jar)
- 执行:D:\my_app_maven\hello_maven>java -cp target\hello-maven-SNAPSHOT-0.0.1.jar com.yyoo.maven01.HelloWorld,注意需要完整的类路径。执行后,控制台会打印出"Hello World!"。这样我们的Hello World就完成了
- 发布到仓库:在命令窗口执行,D:\my_app_maven\hello_maven>mvn install。执行后会在本地仓库~/m2/repository/com/yyoo/maven01/${artifactId}/${version}/下发布artifactId+version.jar包。注意:mvn install执行时,会自动先执行mvn compile,然后mvn package,最后发布到本地仓库,也就是可以直接执行mvn install。
- 清除:在命令窗口执行,D:\my_app_maven\hello_maven>mvn clean。执行后,会自动删除target目录,但是已经发布到本地仓库的版本将不会被删除
注意
- 大多数写Hello World 程序时,是第一次执行mvn的相关命令,maven在首次执行这些命令的时候会先检查本地仓库相关的依赖,如果没有相关依赖,maven会自动联网(所以,在首次执行相关命令时,请保证可以联网)下载相关依赖到本地仓库,这会耗些时间。
- 上面的编译、打包、发布命令均可以同mvn clean命令一起使用,如mvn clean compile、mvn clean package、mvn clean install,这些命令均先clean后执行。clean的主要功能是删除maven生成的target文件,如果不执行clean,而直接install的话,其过程中生成的如.class文件就会覆盖原来的文件,这在一般情况下是没有问题的。但是,比如你在源文件删除了一个java,结果没有clean,则它依然存在与target中,可能会对最终的结果造成影响。
- 执行mvn install的时候会执行test,但有时候我们只想编译不运行Test,可以使用mvn install -DskipTests或mvn install -Dmaven.test.skip=true跳过测试
作者:zzy