1.准备工作
下载maven(url:http://archive.apache.org/dist/maven/binaries/maven-2.0.3-bin.zip ),版本为2.0.3,最新版本为2.0.6
将maven-2.0.3解压缩到d盘根目录,添加环境变量Path,D:\maven-2.0.3\bin
修改D:\maven-2.0.3\conf\settings.xml设置,<localRepository>D:\WADS0.5\maven-2.0.4\maven\repository</localRepository>
D:\WADS0.5\maven-2.0.4\maven\repository为仓库文件物理路径
打开cmd窗口
D:\>mvn -version
Maven version: 2.0.3
表示maven安装成功
2.命令方式
D:\>mvn archetype:create -DgroupId=org.fengzhong.comf -DartifactId=fzvideo -DarchetypeArtifactId=maven-archetype-webapp
...
[INFO] Archetype created in dir: D:\fzvideo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Fri Oct 17 14:45:42 CST 2008
[INFO] Final Memory: 4M/7M
[INFO] ------------------------------------------------------------------------
(因为maven在执行过程中需要一些jar文件支持,如果localRepository设定目录下面没有这些文件,会自动去下载,如果网络连接有问题,会导致创建失败)
org.fengzhong.comf是目录名称
fzvideo是工程名称
命令成功执行之后:得到目录结构
fzvideo
pom.xml
src
main
java(手动建立)
resources
webapp
拷贝工程的源代码到java目录下面
拷贝工程的资源文件到resources目录下面
拷贝工程的发布文件到webapp目录下面
D:\>cd fzvideo
D:\fzvideo>mvn package
...
[INFO] Exploding webapp...
[INFO] Copy webapp webResources to D:\fzvideo\target\fzvideo
[INFO] Assembling webapp fzvideo in D:\fzvideo\target\fzvideo
[INFO] Generating war D:\fzvideo\target\fzvideo.war
[INFO] Building war: D:\fzvideo\target\fzvideo.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Fri Oct 17 14:50:10 CST 2008
[INFO] Final Memory: 3M/7M
[INFO] ------------------------------------------------------------------------
打包完成后:D:\fzvideo\target生成target目录
fzvideo
pom.xml
src
...
target
classes
fzvideo
fzvideo.war(即为打包成功发布文件,直接放到容器中运行,例如:tomcat webapps下面)
3.eclipse插件方式(默认工程结构符合maven格式)
菜单Run->External Tools->External Tools
Program新增一个
Location:D:\maven-2.0.3\bin\mvn.bat(定位mvn.bat文件)
Working Directory:Browse Workspace 选择工程
Arguments:package -e
4.注意:打包过程中最好将test删掉( src/test/java),否则在执行过程中由于test测试通不过而无法打包成功.
src/main/java
src/main/resources
以上两个目录名称不能拼写错误,否则打包出现问题.
maven优点:由于在项目中使用maven仓库进行jar文件管理,pom.xml文件是maven核心,使用maven可以将pom.xml中定义的jar文件自动
拷贝到WEB-INF/lib下面,同时对java文件进行编译成class文件,和resources文件夹下面的资源文件自动拷贝到WEB-INF/classes下面,
将整个工程打包成war文件.
在开发的工程中可能会使用jdk1.5的注释或泛型,如:
@Override
@SuppressWarnings("unused")
@SuppressWarnings("deprecation")
Map<String, String> map = new HashMap<String, String>();
maven默认是使用低版本编译,mvn package -e 抛出如下一些异常:
D:\wap_build\src\main\java\org\fengzhong\wapbuild\util\FileUtil.java:[374,28] 需
要 ';'
D:\wap_build\src\main\java\org\fengzhong\wapbuild\util\FileUtil.java:[374,33] 非
法字符: \59272
D:\wap_build\src\main\java\org\fengzhong\wapbuild\util\FileUtil.java:[374,39] 非
法字符: \58933
D:\wap_build\src\main\java\org\fengzhong\wapbuild\util\FileUtil.java:[374,45] 非
法字符: \65533
D:\wap_build2.5.1\src\main\java\org\fengzhong\wapbuild\action\news\SaveNewsIssue
ContentAction.java:[295,25] -source 1.3 中不支持注释
(请尝试使用 -source 1.5 以启用注释)
@SuppressWarnings("unused")
D:\wap_build2.5.1\src\main\java\org\fengzhong\wapbuild\service\research\impl\Mob
ileResearchServiceImpl.java:[165,19] -source 1.3 中不支持泛型
(请尝试使用 -source 1.5 以启用泛型)
Map<String, String> map = new HashMap<String, String>();
D:\wap_build\src\main\java\org\fengzhong\wapbuild\util\StringUtils.java:[134,36]
需要 ';'
D:\wap_build\src\main\java\org\fengzhong\wapbuild\util\StringUtils.java:[134,41]
非法字符: \59272
D:\wap_build\src\main\java\org\fengzhong\wapbuild\util\StringUtils.java:[134,47]
非法字符: \58933
D:\wap_build\src\main\java\org\fengzhong\wapbuild\util\StringUtils.java:[134,53]
非法字符: \65533
D:\wap_build\src\main\java\org\fengzhong\wapbuild\service\product\impl\ProjectIm
pl.java:[135,20] -source 1.3 中不支持泛型
(请尝试使用 -source 1.5 以启用泛型)
List<Channel> temp2 = new ArrayList<Channel>();
说明:FileUtil.java和StringUtils.java在工程中没有问题,在类中写了main函数方法。
解决方法:需要对pom.xml配置plugin, 如果工程中的jar文件都是统一由maven管理,配置:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
就可以了,否则需要指定jar的物理位置:
<compilerArguments>
<extdirs>D:\wap_build\src\main\webapp\WEB-INF\lib</extdirs>
</compilerArguments>
lib默认一般放在工程~\WEB-INF\下面,同时也方便打包时将lib加入war文件中。
如果既没有使用maven管理jar,也没有指定compilerArguments ~ extdirs ~ lib配置路径,在编译时会抛出如:
D:\wap_build\src\main\java\org\fengzhong\wapbuild\action\common\MainAction.java:
[3,30] 软件包 com.opensymphony.xwork 不存在
D:\wap_build\src\main\java\org\fengzhong\wapbuild\action\common\MainAction.java:
[5,32] 找不到符号
符号: 类 ActionSupport
public class MainAction extends ActionSupport{
... 等找不到软件包或符号异常。
打开pom.xml文件,配置jdk1.5编译,例如完整pom.xml文件代码:
都配置好的情况下:mvn package -e
...
[INFO] Generating war D:\wap_build\target\wap_build-1.0-SNAPSHOT.war
[INFO] Building war: D:\wap_build\target\wap_build-1.0-SNAPSHOT.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 28 seconds
[INFO] Finished at: Wed Aug 12 08:52:54 GMT 2009
[INFO] Final Memory: 4M/34M
[INFO] ------------------------------------------------------------------------
在创建的wap_build第一级目录target\下面就可以找到以pom.xml文件中: artifactId-version.war命名的部署文件了。
命令索引:
D:\>mvn archetype:create -DgroupId=org.fengzhong.wapbuild -DartifactId=wap_build -DarchetypeArtifactId=maven-archetype-webapp
D:\>cd wap_build
D:\wap_build>mvn package -e
目录索引: