使用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> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <configuration> <stopKey>foo</stopKey> <stopPort>9900</stopPort> </configuration> </plugin> </plugins> </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 | 用于生成简单的J2EE应用程序的原型 |
maven-archetype-mojo | An archetype to generate a sample a sample Maven plugin. |
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 | 用于生成JSR-268 Portlet应用的原型 |
maven-archetype-quickstart | 用于生成快速开始的原型 |
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 | 用于生成Java Web应用程序的原型 |
转载于:https://blog.51cto.com/programmersky/1772690