使用Maven创建一个简单的web应用,使用如下命令
切换到 my-webapp目录下,可以找到项目对象模型pom.xml
其中 packaging 标签的值为war,这种打包类型配置让Maven以war文件的形式生成一个web应用。一个打包类型为war的项目,将会在target/目录创建一个war文件,这个文件的默认名称是content-zh-webapp-0.6-SNAPSHOT.war。对于这个项目,默认的war文件是target/simple-webapp-1.0-SNAPSHOT.war。在这个项目中,我们已经通过在项目的构建配置中加入fileName元素来定义生成的war文件的名称,根据这个设置,package阶段生成的war文件为target/my-webapp.war。除此以外,还 可以看到src/main/webapp下生成了简单的一个index.jsp以及WEB-INF下的web项目配置文件web.xml。
接下来我们打包程序,运行如下命令
在 my-webapp/target目录下,我们看到了生成的my-webapp.war。
配置Jetty插件
在编译并打包了我们的web应用之后,我们想要将它部署到一个servlet容器中,然后测试一下由Maven Archetype插件生成的index.jsp。一般我们发布web程序都需要下载Jetty或Tomcat等web容器,解压分发包,然后将我们打好的war包拷贝到webapps目录下,然后启动服务器。利用Maven的Jetty插件可以省去这些步骤,在Maven中运行我们的web应用。为此,我们需要在项目的pom.xml文件中配置Jetty插件,配置后的pom.xml如下
上面的文件除了jetty外,还配置了maven-compiler-plugin编译插件,此插件可以用来指定编译器版本,以及其他一些编译细节。
修改完成后,运行如下命令,就可以启动jetty发布我们的web应用了。
控制台打印显示服务已经启动
在浏览器中输入http://localhost:8080/my-webapp/,就可以看到index.jsp页面的内容了。
启动与关闭Jetty
委托Jetty插件无限期运行的目标包括run、run-war和run-exploded。你可以在视窗控制终端(如DOS窗口)使用<ctrl-c>关闭它,或者在另一个视窗控制终端使用stop目标关闭。如果你希望能使用mvn jetty:stop 执行关闭命令,则需要你在插件中配置一个特殊的端口和控制键。下面是一个例子配置
启动
停止
至此一个简单的web应用就完成了,你可以像其他web应用一样对它进行添加修改了,而工程的调试运行还可以试用上面的jetty,还是很方便的。
更详细的配置
http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
切换到 my-webapp目录下,可以找到项目对象模型pom.xml
<
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 > my-webapp </ artifactId >
< packaging > war </ packaging >
< version > 1.0-SNAPSHOT </ version >
< name > my-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 > my-webapp </ finalName >
</ build >
</ project >
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 > my-webapp </ artifactId >
< packaging > war </ packaging >
< version > 1.0-SNAPSHOT </ version >
< name > my-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 > my-webapp </ finalName >
</ build >
</ project >
其中 packaging 标签的值为war,这种打包类型配置让Maven以war文件的形式生成一个web应用。一个打包类型为war的项目,将会在target/目录创建一个war文件,这个文件的默认名称是content-zh-webapp-0.6-SNAPSHOT.war。对于这个项目,默认的war文件是target/simple-webapp-1.0-SNAPSHOT.war。在这个项目中,我们已经通过在项目的构建配置中加入fileName元素来定义生成的war文件的名称,根据这个设置,package阶段生成的war文件为target/my-webapp.war。除此以外,还 可以看到src/main/webapp下生成了简单的一个index.jsp以及WEB-INF下的web项目配置文件web.xml。
接下来我们打包程序,运行如下命令
mvn clean package
在 my-webapp/target目录下,我们看到了生成的my-webapp.war。
配置Jetty插件
在编译并打包了我们的web应用之后,我们想要将它部署到一个servlet容器中,然后测试一下由Maven Archetype插件生成的index.jsp。一般我们发布web程序都需要下载Jetty或Tomcat等web容器,解压分发包,然后将我们打好的war包拷贝到webapps目录下,然后启动服务器。利用Maven的Jetty插件可以省去这些步骤,在Maven中运行我们的web应用。为此,我们需要在项目的pom.xml文件中配置Jetty插件,配置后的pom.xml如下
<
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 > my-webapp </ artifactId >
< packaging > war </ packaging >
< version > 1.0-SNAPSHOT </ version >
< name > my-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 > my-webapp </ finalName >
< plugins >
< plugin >
< groupId > org.mortbay.jetty </ groupId >
< artifactId > maven-jetty-plugin </ artifactId >
</ plugin >
< plugin >
< artifactId > maven-compiler-plugin </ artifactId >
< configuration >
< source > 1.6 </ source >
< target > 1.6 </ target >
</ configuration >
</ plugin >
</ plugins >
</ build >
</ project >
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 > my-webapp </ artifactId >
< packaging > war </ packaging >
< version > 1.0-SNAPSHOT </ version >
< name > my-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 > my-webapp </ finalName >
< plugins >
< plugin >
< groupId > org.mortbay.jetty </ groupId >
< artifactId > maven-jetty-plugin </ artifactId >
</ plugin >
< plugin >
< artifactId > maven-compiler-plugin </ artifactId >
< configuration >
< source > 1.6 </ source >
< target > 1.6 </ target >
</ configuration >
</ plugin >
</ plugins >
</ build >
</ project >
上面的文件除了jetty外,还配置了maven-compiler-plugin编译插件,此插件可以用来指定编译器版本,以及其他一些编译细节。
修改完成后,运行如下命令,就可以启动jetty发布我们的web应用了。
mvn jetty:run
控制台打印显示服务已经启动
[INFO] Configuring Jetty for project: my-webapp Maven Webapp
[INFO] Webapp source directory = C:\Documents and Settings\caojh\my-webapp\src\main\webapp
[INFO] Reload Mechanic: automatic
[INFO] Classes = C:\Documents and Settings\caojh\my-webapp\target\classes
2011-01-27 19:46:21.028:INFO::Logging to STDERR via org.mortbay.log.StdErrLog
[INFO] Context path = /my-webapp
[INFO] Tmp directory = determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
[INFO] web.xml file = C:\Documents and Settings\caojh\my-webapp\src\main\webapp\WEB-INF\web.xml
[INFO] Webapp directory = C:\Documents and Settings\caojh\my-webapp\src\main\webapp
[INFO] Starting jetty 6.1.26![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
2011-01-27 19:46:21.200:INFO::jetty-6.1.26
2011-01-27 19:46:21.450:INFO::No Transaction manager found - if your webapp requires one, please configure one.
2011-01-27 19:46:21.731:INFO::Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
[INFO] Webapp source directory = C:\Documents and Settings\caojh\my-webapp\src\main\webapp
[INFO] Reload Mechanic: automatic
[INFO] Classes = C:\Documents and Settings\caojh\my-webapp\target\classes
2011-01-27 19:46:21.028:INFO::Logging to STDERR via org.mortbay.log.StdErrLog
[INFO] Context path = /my-webapp
[INFO] Tmp directory = determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
[INFO] web.xml file = C:\Documents and Settings\caojh\my-webapp\src\main\webapp\WEB-INF\web.xml
[INFO] Webapp directory = C:\Documents and Settings\caojh\my-webapp\src\main\webapp
[INFO] Starting jetty 6.1.26
![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
2011-01-27 19:46:21.200:INFO::jetty-6.1.26
2011-01-27 19:46:21.450:INFO::No Transaction manager found - if your webapp requires one, please configure one.
2011-01-27 19:46:21.731:INFO::Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
在浏览器中输入http://localhost:8080/my-webapp/,就可以看到index.jsp页面的内容了。
启动与关闭Jetty
委托Jetty插件无限期运行的目标包括run、run-war和run-exploded。你可以在视窗控制终端(如DOS窗口)使用<ctrl-c>关闭它,或者在另一个视窗控制终端使用stop目标关闭。如果你希望能使用mvn jetty:stop 执行关闭命令,则需要你在插件中配置一个特殊的端口和控制键。下面是一个例子配置
<
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 > my-webapp </ artifactId >
< packaging > war </ packaging >
< version > 1.0-SNAPSHOT </ version >
< name > my-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 > my-webapp </ finalName >
< plugins >
< plugin >
< groupId > org.mortbay.jetty </ groupId >
< artifactId > maven-jetty-plugin </ artifactId >
< configuration >
< stopPort > 9966 </ stopPort >
< stopKey > foo </ stopKey >
</ configuration >
</ plugin >
< plugin >
< artifactId > maven-compiler-plugin </ artifactId >
< configuration >
< source > 1.6 </ source >
< target > 1.6 </ target >
</ configuration >
</ plugin >
</ plugins >
</ build >
</ project >
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 > my-webapp </ artifactId >
< packaging > war </ packaging >
< version > 1.0-SNAPSHOT </ version >
< name > my-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 > my-webapp </ finalName >
< plugins >
< plugin >
< groupId > org.mortbay.jetty </ groupId >
< artifactId > maven-jetty-plugin </ artifactId >
< configuration >
< stopPort > 9966 </ stopPort >
< stopKey > foo </ stopKey >
</ configuration >
</ plugin >
< plugin >
< artifactId > maven-compiler-plugin </ artifactId >
< configuration >
< source > 1.6 </ source >
< target > 1.6 </ target >
</ configuration >
</ plugin >
</ plugins >
</ build >
</ project >
启动
mvn jetty:start
停止
mvn jetty:stop
至此一个简单的web应用就完成了,你可以像其他web应用一样对它进行添加修改了,而工程的调试运行还可以试用上面的jetty,还是很方便的。
更详细的配置
http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin