# 骨架是浮云,packaging 是关键

骨架(archetype)会影响你的 maven 项目的 pom.xml 配置文件的 <packaging>...</packaging> 元素的值,这个值决定了:

  1. 你的项目是 java 项目,还是 java web 项目;

  2. 你的项目最终是打成 jar 包,还是打成 war 包;

  3. 你的项目的目录结构。

骨架决定了你的项目的类型(和目录结构)只是表像!真正起作用的是 <packaging> 元素的值。

  • maven-archetype-quickstart 骨架会导致 <packaging>jar</packaging> ,表示项目是一个 Java 项目,最终要打成 jar 包。

    其结构的完整形式应该、必须、一定如下:

    项目
    │── pom.xml
    └── src
        ├── main
        │   │── java
        │   └── resources
        └── test
            │── java
            └── resources
    

    jar 也是也是 <packaging> 的默认值,缺省 <packaging> 时等价于 <packaging>jar</packaging>

  • maven-archetype-webapp 意味着 <packaging>war</packaging> ,表示项目是一个 Java Web 项目,最终要打成 war 包。

    其目录结构应该、必须、一定如下:

    项目
    │── pom.xml
    └── src
        ├── main
        │   │── java
        │   │── resources
        │   └── webapp
        └── test
            │── java
            └── resources