今天看了Maven,感觉这个在实际大型项目开发时的确有可取之处,所以试着照着示例动手开发一下。
MyEclipse中自动集成了Maven4Myclipse,所以不用像Eclipse一样需要install插件。但还是要在Windows-Preferences中选择安装目录及其他设置,最重要的就是把内置的Mavne替换为Apache官网上下载的,与JDK类似,在MyEclipse->Maven4MyEclipse->Installations中add一个本地mavne的目录并勾选。
配置完毕即可开始Maven Project的开发。从菜单栏File中选择new的other选项,选择对话框中的Maven Project,下一步使用默认的workspace即可。之后便要选择Archetype。在这里我选择GroupId为org.apache.maven.archetypes,ArtifactId为maven-archetype-webapp的原型。如图
下一步输入项目参数,配置GroupId,ArtifactId,Version,Package等,还可添加额外的Properties,当然这些以后可以通过pom.xml修改。生成项目目录结构及pom.xml如下
接下来在main文件夹下添加一个存放源码的文件夹java,与package名相对应。接下来在src/main/java中添加一个class。如果添加的类似一个servlet则会报错,原因是pom中没有配置依赖。在pom.xml中添加依赖配置项,其中java,servlet,jsp,jstl的配置如下:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
之后servlet中由于导入了HttpServlet类就没有报错了。再在pom中添加tomcat的配置信息,在<build>下添加以下代码:
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
即可完成tomcat配置。我写的类是一个简单的servlet,负责输出"hello world",代码如下:
package org.zachary;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{
PrintWriter out = response.getWriter();
out.println("Hello World");
out.flush();
out.close();
}
}
项目名右键Run As->Maven Build..,选择Goals为tomcat7:run,可选skip tests,最后点击run运行。
结果报错:-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
百度之发现maven配置有点问题。cmd中mvn正常,可以把它配置到jdk里,在Window->Preference->Java->Installed JREs->Edit,Default Vm arguments中设置
-Dmaven.mutiModuleProjectDirectory=$M2_HOME
其中$M2_HOME为配置的环境变量,即maven的目录,修改之后再尝试运行,上面的错误消失但是执行出错。原来是因为pom中配置javaee-web-api为7.0,而生成项目文件时自动添加J2SE-1.5的类库,所以删除替换为本地的JDK1.7.0_40,运行果然成功!
另外一点小小的体会:Maven在开启tomcat时只需在pom.xml中配置好plugin,jetty也类似,但是要注意pom.xml中各项的配置,这点尤为重要。