1.接上文|maven部署web工程基础步骤(http://simpledev.iteye.com/blog/254281)
在开发的工程中可能会使用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文件代码:
<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>org.fengzhong.wapbuild</groupId> <artifactId>wap_build</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>wap_build 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> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> <encoding>UTF-8</encoding> <compilerArguments> <extdirs>D:\wap_build\src\main\webapp\WEB-INF\lib</extdirs> </compilerArguments> </configuration> </plugin> </plugins> </build> </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
目录索引:
D:/ wap_build src \main\java ...工程中的java文件 \main\resources ...工程中的资源文件 \main\webapp ...工程中的页面文件(如:jsp,html,styles/css,js,images,WEB-INF/classes,WEB-INF/lib,WEB-INF/web.xml) target(BUILD SUCCESSFUL通过之后才会生成,一般重新生成时,最好把该目录删除) classes(编译后的类路径) wap_build-1.0-SNAPSHOT ---部署文件夹 wap_build-1.0-SNAPSHOT.war ---部署文件war pom.xml