maven支配web工程基础步骤

maven部署web工程基础步骤

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文件代码:

Xml代码  maven支配web工程基础步骤
  1. < project   xmlns = "http://maven.apache.org/POM/4.0.0"   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"   
  2.   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" >   
  3.   < modelVersion > 4.0.0 </ modelVersion >   
  4.   < groupId > org.fengzhong.wapbuild </ groupId >   
  5.   < artifactId > wap_build </ artifactId >   
  6.   < packaging > war </ packaging >   
  7.   < version > 1.0-SNAPSHOT </ version >   
  8.   < name > wap_build Maven Webapp </ name >   
  9.   < url > http://maven.apache.org </ url >   
  10.   < dependencies >   
  11.     < dependency >   
  12.       < groupId > junit </ groupId >   
  13.       < artifactId > junit </ artifactId >   
  14.       < version > 3.8.1 </ version >   
  15.       < scope > test </ scope >   
  16.     </ dependency >   
  17.   </ dependencies >   
  18.   < build >   
  19.     < plugins >   
  20.         < plugin >   
  21.             < artifactId > maven-compiler-plugin </ artifactId >   
  22.             < configuration >   
  23.                 < source > 1.5 </ source >   
  24.                 < target > 1.5 </ target >   
  25.                 < encoding > UTF-8 </ encoding >   
  26.              < compilerArguments >   
  27.                < extdirs > D:\wap_build\src\main\webapp\WEB-INF\lib </ extdirs >   
  28.              </ compilerArguments >   
  29.             </ configuration >   
  30.         </ plugin >   
  31.     </ plugins >   
  32.   </ build >   
  33. </ project >   

 
都配置好的情况下: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
目录索引:

Js代码  maven支配web工程基础步骤
  1. D:/  
  2.   wap_build  
  3.     src  
  4.       \main\java   ...工程中的java文件  
  5.       \main\resources   ...工程中的资源文件  
  6.       \main\webapp  ...工程中的页面文件(如:jsp,html,styles/css,js,images,WEB-INF/classes,WEB-INF/lib,WEB-INF/web.xml)  
  7.     target(BUILD SUCCESSFUL通过之后才会生成,一般重新生成时,最好把该目录删除)  
  8.         classes(编译后的类路径)  
  9.         wap_build-1.0-SNAPSHOT  ---部署文件夹  
  10.         wap_build-1.0-SNAPSHOT.war ---部署文件war  
  11.     pom.xml