﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Digging in Java</title><link>http://www.blogjava.net/birds/</link><description>maven, spring, hibernate, et al</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 12:22:52 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 12:22:52 GMT</pubDate><ttl>60</ttl><item><title>Maven 浅谈（三）－plugin</title><link>http://www.blogjava.net/birds/archive/2011/04/07/347773.html</link><dc:creator>GX</dc:creator><author>GX</author><pubDate>Thu, 07 Apr 2011 03:24:00 GMT</pubDate><guid>http://www.blogjava.net/birds/archive/2011/04/07/347773.html</guid><wfw:comment>http://www.blogjava.net/birds/comments/347773.html</wfw:comment><comments>http://www.blogjava.net/birds/archive/2011/04/07/347773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/birds/comments/commentRss/347773.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/birds/services/trackbacks/347773.html</trackback:ping><description><![CDATA[在前面的第二部分搭了个spring的架子，把spring-webmvc需要的东西都准备好了<br />
先来把这个web app补充一下吧，就是一个hello world<br />
<br />
首先修改 src/main/webapp/WEB-INF目录下的 web.xml：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;?</span><span style="color: #000000;">xml&nbsp;version</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">1.0</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;encoding</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">UTF-8</span><span style="color: #000000;">"</span><span style="color: #000000;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">web</span><span style="color: #000000;">-</span><span style="color: #000000;">app&nbsp;version</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">2.5</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;xmlns</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://java.sun.com/xml/ns/javaee</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.w3.org/2001/XMLSchema-instance</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://java.sun.com/xml/ns/javaee&nbsp;http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">display</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">my&nbsp;Web&nbsp;Application</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">display</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">context</span><span style="color: #000000;">-</span><span style="color: #000000;">param</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">contextConfigLocation</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">value</span><span style="color: #000000;">&gt;/</span><span style="color: #000000;">WEB</span><span style="color: #000000;">-</span><span style="color: #000000;">INF</span><span style="color: #000000;">/</span><span style="color: #000000;">my</span><span style="color: #000000;">-</span><span style="color: #000000;">servlet.xml</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">param</span><span style="color: #000000;">-</span><span style="color: #000000;">value</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">context</span><span style="color: #000000;">-</span><span style="color: #000000;">param</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">listener</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">listener</span><span style="color: #000000;">-</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">org.springframework.web.context.ContextLoaderListener</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">listener</span><span style="color: #000000;">-</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">listener</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">my</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">org.springframework.web.servlet.DispatcherServlet</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">mapping</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">my</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">servlet</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">url</span><span style="color: #000000;">-</span><span style="color: #000000;">pattern</span><span style="color: #000000;">&gt;/</span><span style="color: #000000;">my</span><span style="color: #008000;">/*</span><span style="color: #008000;">&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet-mapping&gt;<br />
<br />
&lt;/web-app&gt;</span></div>
这里，web-app的版本是2.5，早期的版本是不支持EL的，版本号不对，以后会有问题<br />
除了servlet之外，web.xml里还有一些参数：<br />
contextConfigLocation定义了spring web的配置文件，而listener则表示由spring的ContextLoaderListener来加载这个配置文件<br />
<br />
my-servlet.xml则如下例：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;?</span><span style="color: #000000;">xml&nbsp;version</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">1.0</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;encoding</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">UTF-8</span><span style="color: #000000;">"</span><span style="color: #000000;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">beans&nbsp;xmlns</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.springframework.org/schema/beans</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.w3.org/2001/XMLSchema-instance</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:p</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.springframework.org/schema/p</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:context</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.springframework.org/schema/context</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:mvc</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.springframework.org/schema/mvc</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.springframework.org/schema/beans&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http:</span><span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/context&nbsp;</span><span style="color: #008000; text-decoration: underline;">http://www.springframework.org/schema/context/spring-context-3.0.xsd</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http:</span><span style="color: #008000;">//</span><span style="color: #008000;">www.springframework.org/schema/mvc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; text-decoration: underline;">http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd</span><span style="color: #008000;">"&gt;</span><span style="color: #008000;"><br />
</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">bean<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">org.springframework.web.servlet.view.InternalResourceViewResolver</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">property&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">prefix</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/WEB-INF/jsp/</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">property&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">suffix</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">.jsp</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">bean</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">mvc:view</span><span style="color: #000000;">-</span><span style="color: #000000;">controller&nbsp;path</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;view</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">index</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">beans</span><span style="color: #000000;">&gt;</span></div>
<br />
这里定义了一个spring的view resolver，这个view resolver就是按照MVC的框架，来找到对应的view的。InternalResourceViewResolver将会根据URL来决定显示哪个jsp。这些jsp文件都在 WEB-INF目录下。<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">mvc:view</span><span style="color: #000000;">-</span><span style="color: #000000;">controller&nbsp;path</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;view</span><span style="color: #000000;">-</span><span style="color: #000000;">name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">index</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span></div>
则是直接把根指向了index，通过view resolver，它其实是指向了 WEB-INF/index.jsp<br />
<br />
maven 在建项目的时候，在src/main/webapp下自动生成了一个index.jsp，可以把它移到 WEB-INF目录下<br />
<br />
下一步，再打开 pom.xml，把这段加进去：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">build</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">finalName</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">my</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">finalName</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">plugins</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">plugin</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">groupId</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">org.mortbay.jetty</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">groupId</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">artifactId</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">maven</span><span style="color: #000000;">-</span><span style="color: #000000;">jetty</span><span style="color: #000000;">-</span><span style="color: #000000;">plugin</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">artifactId</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">version</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">6.1</span><span style="color: #000000;">.</span><span style="color: #000000;">26</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">version</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">plugin</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">plugin</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">artifactId</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">maven</span><span style="color: #000000;">-</span><span style="color: #000000;">compiler</span><span style="color: #000000;">-</span><span style="color: #000000;">plugin</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">artifactId</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">configuration</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">source</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">1.6</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">source</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">target</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">1.6</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">target</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">configuration</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">plugin</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">plugins</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">build</span><span style="color: #000000;">&gt;</span></div>
这里定义了两个plug-in，一个很明显，意思是用java 1.6版本来做编译。而另一个则是maven的jetty插件，jetty是一个web server。<br />
<br />
好了，再build一次<br />
mvn clean install<br />
然后运行命令<br />
mvn jetty:run<br />
就是启动一个jetty，并且把本项目deploy。启动完成后，就可以用浏览器打开<br />
http://localhost:8080/my-webapp/my/<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/birds/aggbug/347773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/birds/" target="_blank">GX</a> 2011-04-07 11:24 <a href="http://www.blogjava.net/birds/archive/2011/04/07/347773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Maven 浅谈（二）－建一个spring webapp吧</title><link>http://www.blogjava.net/birds/archive/2011/04/07/347748.html</link><dc:creator>GX</dc:creator><author>GX</author><pubDate>Thu, 07 Apr 2011 00:43:00 GMT</pubDate><guid>http://www.blogjava.net/birds/archive/2011/04/07/347748.html</guid><wfw:comment>http://www.blogjava.net/birds/comments/347748.html</wfw:comment><comments>http://www.blogjava.net/birds/archive/2011/04/07/347748.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/birds/comments/commentRss/347748.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/birds/services/trackbacks/347748.html</trackback:ping><description><![CDATA[概述是挺没意思的，还是写代码做项目有趣。那么来建一个webapp吧<br />
Maven命令是这样的：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">mvn&nbsp;archetype:create&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">DgroupId</span><span style="color: #000000;">=</span><span style="color: #000000;">com.sky.birds&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">DartifactId</span><span style="color: #000000;">=</span><span style="color: #000000;">my</span><span style="color: #000000;">-</span><span style="color: #000000;">webapp&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">DarchetypeArtifactId</span><span style="color: #000000;">=</span><span style="color: #000000;">maven</span><span style="color: #000000;">-</span><span style="color: #000000;">archetype</span><span style="color: #000000;">-</span><span style="color: #000000;">webapp<br />
</span></div>
它会在当前目录下建一个my-webapp目录。目录下有pom.xml和src<br />
在src/main目录下手工建一个java目录，这里可以放java代码，不明白为什么maven没有自动把它建起来<br />
<br />
运行 mvn eclipse:eclipse，然后把项目导入eclipse里。在eclipse里打开pom.xml，这是maven的配置文件。如果装了maven插件，可以看到pom.xml的编辑器里有Overview, Dependencies, Plugins等tab页。<br />
maven的eclipse plugin可以在 http://m2eclipse.sonatype.org/installing-m2eclipse.html 找到<br />
<br />
既然要用到spring web MVC，那当然要有spring的web mvc jar，而web mvc又需要spring web，它们还要用到spring core, context，和beans, 这叫作dependency。而这些spring的库之外，还需要commons-loggin等等。没有maven的时候，就不得不搜索，下载，导入.....才能让程序编译。而在maven里，maven会管理这些dependencies。比如说，目前需要spring webmvc，那么就只需要把spring webmvc加到pom.xml的dependencies里<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">dependencies</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">dependency</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">groupId</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">org.springframework</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">groupId</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">artifactId</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">spring</span><span style="color: #000000;">-</span><span style="color: #000000;">webmvc</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">artifactId</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">version</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">3.0</span><span style="color: #000000;">.</span><span style="color: #000000;">5</span><span style="color: #000000;">.RELEASE</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">version</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">type</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">jar</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">type</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">scope</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">compile</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">scope</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">dependency</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><img src="http://www.blogjava.net/Images/dot.gif" alt="" />.<br />
<br />
&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">dependencies</span><span style="color: #000000;">&gt;</span></div>
运行一下mvn eclipse:clean eclipse:eclipse，然后刷新eclipse，可以看到所需要的库文件已经下载并且加在eclipse的classpath里了<br />
<br />
maven会在当前用户的home目录下建一个 .m2/repository 目录，然后把下载下来的jar文件放在里面。windows下home目录是在Document and Setting，而linux就在用户自己的home目录<br />
<br />
repository下的目录结构是这样的：<br />
/&lt;groupId&gt;/&lt;artifactId&gt;/&lt;version&gt;/<br />
比如说，在maven里配置了hibernate 3.2.7.ga，那么在repository下就是<br />
org/hibernate/hibernate/3.2.7.ga<br />
jar文件就放在这个目录下<br />
<br />
<br />
<img src ="http://www.blogjava.net/birds/aggbug/347748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/birds/" target="_blank">GX</a> 2011-04-07 08:43 <a href="http://www.blogjava.net/birds/archive/2011/04/07/347748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Maven 浅谈（一）</title><link>http://www.blogjava.net/birds/archive/2011/04/05/347634.html</link><dc:creator>GX</dc:creator><author>GX</author><pubDate>Tue, 05 Apr 2011 03:18:00 GMT</pubDate><guid>http://www.blogjava.net/birds/archive/2011/04/05/347634.html</guid><wfw:comment>http://www.blogjava.net/birds/comments/347634.html</wfw:comment><comments>http://www.blogjava.net/birds/archive/2011/04/05/347634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/birds/comments/commentRss/347634.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/birds/services/trackbacks/347634.html</trackback:ping><description><![CDATA[Maven是一种project management工具。大致上来说，可以认为它是没有图形界面的IDE。你可以用它来编译，打包，做成jar，war，ear.....<br />
<br />
下载安装之后，可以通过命令创建一个简单的java项目<br />
<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">mvn&nbsp;archetype:create&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">DgroupId</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">com.sky&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">DartifactId</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">birds&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">DpackageName</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">com.sky.birds<br />
</span></div>
<br />
这里，archetype是maven的一个plugin，而create是这个plugin的一个goal<br />
<br />
Maven一个麻烦的地方就是它有自己的目录layout，大致是这样的：<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">birds</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">pom.xml<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">src</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">src</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">main</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">main</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">java</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">java</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">com</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">sky</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">birds<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">src</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">test</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">test</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">java</span><span style="color: rgb(0, 0, 0);">/</span></div>
<br />
上面的命令会在com.sky.birds下面生成一个App.java，里面就是一个简单的hello world程序<br />
<br />
有了这个基本的框架之后，可以用<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">mvn&nbsp;install<br />
</span></div>
来编译，并且打包成一个jar<br />
<br />
这里install是maven的一个lifecycle phase。maven的lifecycle phase包括process-resources, compile, process-classes, process-test-resources,<br />
test-compile, test, prepare-package, package......<br />
在maven的默认设置中，每个phase都附加了相应的plugin goal。而执行一个phase，意味着同时执行所有在它之前的phases<br />
<br />
比方说，process-resources这个lifecycle phase，它对应的plugin goal是resources:resources；test，对应着 surefire:test；package，对应 jar:jar<br />
<br />
当你执行 mvn install的时候，换成plugin就是<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">mvn&nbsp;resources:resources&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;compiler:compile&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;resources:testResources&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;compiler:testCompile&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;surefire:test&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;jar:jar</span></div>
<br />
<br />
<br />
编译好了应该可以运行那个hello world了，是这样的：<br />
mvn exec:java -Dexec.mainClass=com.sky.birds.App<br />
要加参数？用 -Dexec.args=xxxx<br />
<br />
<br />
项目建起来了，但真正写代码还是在eclipse里。把它import到eclipse里？杯具发生了：eclipse不认为那是一个java项目......<br />
<br />
有个命令可以解决这个问题<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">mvn&nbsp;eclipse:eclipse</span></div>
<br />
然后就可以把它作为一个existing project，import到eclipse里了<br />
<br />
<br />
顺便说一下，建一个web项目类似于<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 0);">mvn&nbsp;archetype:create&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">DgroupId</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">com.mycompany.app&nbsp;＼<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">DartifactId</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">my</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">webapp&nbsp;＼<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">DarchetypeArtifactId</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">maven</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">archetype</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">webapp</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/birds/aggbug/347634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/birds/" target="_blank">GX</a> 2011-04-05 11:18 <a href="http://www.blogjava.net/birds/archive/2011/04/05/347634.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>