标准目录结构

 

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

  1. 编译 在cmd命令窗口,进入D:\my_app_maven\hello_maven文件夹
    在此路径下执行D:\my_app_maven\hello_maven>mvn compile,maven将编译代码,并将代码放入target文件夹

出现如图所示,表示编译成功

01-Maven的Helloworld_apache

target文件夹的内容,编译后的文件放在classes文件夹中

  1. 打包:在命令窗口执行,D:\my_app_maven\hello_maven>mvn package。执行后会在target文件夹下出现hello-maven-SNAPSHOT-0.0.1.jar包,(jar的包名就是artifactId+version.jar)
  2. 执行:D:\my_app_maven\hello_maven>java -cp target\hello-maven-SNAPSHOT-0.0.1.jar com.yyoo.maven01.HelloWorld,注意需要完整的类路径。执行后,控制台会打印出"Hello World!"。这样我们的Hello World就完成了
  3. 发布到仓库:在命令窗口执行,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。
  4. 清除:在命令窗口执行,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