05.使用maven原型(ArcheType)
maven作为一个高度自动化构建工具,本身提供了快速构建项目的功能,下面就来体验一下使用maven构建项目的过程。
创建Jave项目
使用如下命令创建Java项目:
$ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
指令成功执行之后,maven会在当前目录下创建artifactId同名的(此处是demo)目录,并生成一个maven的Java项目。
构建完成后的目录结构如下:
demo
└─src
├─main
│ └─java
│ └─com
│ └─mycompany
│ └─app
└─test
└─java
└─com
└─mycompany
└─app
可以看到,maven创建的项目是一个标准的maven项目,不过目前maven只创建了src/main/java(存放项目的源代码)和src/test/java(存放测试源代码)两个目录,但实际项目开发中一般都会有配置文件(还有不用配置的吗?)所以我们还需要手动创建src/main/resources(存放项目开发中用到的配置文件,如log4j.properties)和src/test/resources(存放测试时用到的配置文件)
Linux:
$ mkdir -p src/main/resources
$ mkdir -p src/test/resources
windows
$ mkdir src\main\resources
$ mkdir src\test\resources
生成的maven POM文件节点说明:
<project\> pom文件的顶级节点
<modelVersion\> object model版本,对maven2和maven3来说,只能是4.0.0
<groupId\> 项目创建组织的标识符,一般是域名的倒写
<artifactId\> 定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
<version\> 当前项目的版本,SNAPSHOT,表示是快照版本,在开发中
<packaging\> 打包的方式,有jar、war、ear等
<name\> 项目的名称
<url\> 项目的地址
<properties\> 属性配置,比如:<project.build.sourceEncoding\>UTF-8</project.build.sourceEncoding>
<dependencies\> 构建项目依赖的jar
由groupId、artifactId和version唯一的确定了一个项目坐标
创建Jave Web项目
使用如下命令创建Java Web项目
$ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=demo-webapp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
生成如下目录:
demo-webapp
└─src
└─main
├─resources
└─webapp
└─WEB-INF
创建好的JavaWeb项目中目前只有src/main/resources目录,因此还需要手动添加src/main/java、src/test/java、src/test/resources
Linux:
$ mkdir -p src/main/java
$ mkdir -p src/test/java
$ mkdir -p src/test/resources
windows
$ mkdir src\main\java
$ mkdir src\test\java
$ mkdir src\test\resources
打包发布Java Web项目
进入生成的项目目录,执行如下打包指令:
$ mvn clean package
指令执行成功,目录结构如下:
demo-webapp
├─src
│ ├─main
│ │ ├─java
│ │ ├─resources
│ │ └─webapp
│ │ └─WEB-INF
│ └─test
│ ├─java
│ └─resources
└─target
├─classes
├─demo-webapp
│ ├─META-INF
│ └─WEB-INF
│ └─classes
├─maven-archiver
├─maven-status
│ └─maven-compiler-plugin
│ ├─compile
│ │ └─default-compile
│ └─testCompile
│ └─default-testCompile
└─test-classes
target 目录下的demo-webapp.war可以直接部署。
使用jetty插件
除了使用Tomcat服务器运行Web项目之外,我们还可以在Web项目中集成Jetty发布运行.
step 1
首先在pom.xml文件中配置Jetty插件:
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>demo-webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>demo-webapp Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>demo-webapp</finalName>
<!--add below node -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<stopKey>foo</stopKey>
<stopPort>9900</stopPort>
<configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
配置的stopKey与stopPort确保与其它应用不冲突
step 2
在项目目录下执行:
$ maven jetty:run
step 3
当看到如下信息后:
[INFO] Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
访问: http://localhost:8080/demo-webapp/
step 4
关闭:
新开一个终端进入项目目录,执行:
$ maven jetty:stop
archetype:generate参数说明:
-DgroupId=com.mycompany.app 新建项目的groupId(组织标识)
-DartifactId=myapp 新建项目的artifactId(项目名称)
-DarchetypeArtifactId=maven-archetype-quickstart 新建项目使用的mvn项目骨架
-DinteractiveMode=false 是否使用交互模式,默认是true;如果设为false,那么当maven需要用户进行输入的时候,它会使用一个默认值。
常用的
archetype | 说明 |
---|---|
maven-archetype-archetype | An archetype to generate a sample archetype project. |
maven-archetype-j2ee-simple | An archetype to generate a simplifed sample J2EE application. |
maven-archetype-plugin | An archetype to generate a sample Maven plugin. |
maven-archetype-plugin-site | An archetype to generate a sample Maven plugin site. |
maven-archetype-portlet | An archetype to generate a sample JSR-268 Portlet. |
maven-archetype-quickstart | An archetype to generate a sample Maven project. |
maven-archetype-simple | An archetype to generate a simple Maven project. |
maven-archetype-site | An archetype to generate a sample Maven site which demonstrates some of the supported document types like APT, XDoc, and FML and demonstrates how to i18n your site. |
maven-archetype-site-simple | An archetype to generate a sample Maven site. |
maven-archetype-webapp | An archetype to generate a sample Maven Webapp project. |