使用maven对jsp进行预编译

         尽管很多servlet容器例如tomcat、jetty等为了提升jsp第一次访问的性能,都提供了jsp的预编译功能:

        

                   来源:http://www.jz123.cn/text/1228321.html

 

但是对于上线前验证或者持续集成的需求来说,很有必要提供一个能够手动或者命令行对jsp文件进行编译检查的方法,考虑到持续集成的便利性,我们使用maven及其插件解决这一问题。

首先从maven官网下载安装包并解压到本机目录,添加系统环境变量“MAVEN_HOME”指向解压目录,并将“%MAVEN_HOME%/bin”添加到系统%path%环境变量下。

开始通过下面方式创建一个java web项目“mvnarchetype:create -DgroupId=com.testweb -DartifactId=TestWebProject-DarchetypeArtifactId=maven-archetype-webapp”,我最开始在这里折腾了很久,因为我没有明白“maven Archetype”的含义,建了一个” quickstart”类型的项目,然后对maven视src中的jsp文件如无物非常迷惑。Archetype的详细列表参见:https://maven.apache.org/guides/introduction/introduction-to-archetypes.html

在执行这个命令行的时候,你同时可能遇到各种问题,因为maven安装包实际提供你的是一个最小可用的包,而你在实际项目中需要用到大量依赖的插件,这都是需要从其中央仓库在线下载的,因为我没有自己的仓库(可以用nexus搭建自己的中央仓库,而且如果实际项目中要用maven的话也一定要搭建自己的中央仓库),所以光下载这些依赖的插件就用了两天……,当然网络上还有一些公共的仓库地址也可以试试:http://tianya23.blog.51cto.com/1081650/386908

当你下载完所需的插件后,提示项目创建成功,并且在”%USERPROFILE%\.m2”下保存了所下载的maven插件,下次使用直接从本地仓库而非中央仓库获取。而如果要使用其他仓库,则需要修改该目录下的settings.xml。

接下来重要的事情就是进入创建的maven项目下,修改下面的的pom.xml,加入对jspc插件使用,在build节点下,finalName节点后加入如下节点信息:

<plugins>

                            <!-- begin - precompiling jsps -->

                            <plugin>

                                     <groupId>org.codehaus.mojo</groupId>

                                     <artifactId>jspc-maven-plugin</artifactId>

               <version>1.4.6</version>

                                     <executions>

                                               <execution>

                                                        <id>jspc</id>

                                                        <goals>

                                                                 <goal>compile</goal>

                                                        </goals>

                                               </execution>

                                     </executions>

                            </plugin>

                            <plugin>

                                     <groupId>org.apache.maven.plugins</groupId>

                                     <artifactId>maven-war-plugin</artifactId>

               <version>2.4</version>

                                     <configuration>

                                               <webXml>${basedir}/target/jspweb.xml</webXml>

                                     </configuration>

                            </plugin>

                            <!-- end -precompiling jsps -->

</plugins>

         这里详细参见:http://www.avajava.com/tutorials/lessons/how-do-i-precompile-my-jsps.html?page=1,但是有一个注意的地方是,每个插件节点下,都需要添加<version>的节点描述信息,否则在后面运行时会出现如下警告信息。

         上面这篇文章中还加入了其他节点信息用于生成web.xml中的信息:

<!-- begin - deploying/undeploying toTomcat -->

                            <plugin>

                                     <groupId>org.codehaus.mojo</groupId>

                                     <artifactId>tomcat-maven-plugin</artifactId>

               <version>1.1</version>

                                     <configuration>

                                               <url>http://192.168.1.7:8080/manager</url>

                                               <server>mytomcat</server>

                                               <path>/mywebapp</path>

                                     </configuration>

                            </plugin>

                            <!--end - deploying/undeploying to Tomcat -->

                            <!--begin - compiling project to a particular version of java -->

                            <plugin>

                                     <groupId>org.apache.maven.plugins</groupId>

                                     <artifactId>maven-compiler-plugin</artifactId>

               <version>2.3.2</version>

                                     <configuration>

                                               <source>1.6</source>

                                               <target>1.6</target>

                                     </configuration>

                            </plugin>

                            <!--end - compiling project to a particular version of java -->

                            <!--begin - setting classpath to use an Eclipse user library for Tomcat (foreclipse:eclipse) -->

                            <plugin>

                                     <groupId>org.apache.maven.plugins</groupId>

                                     <artifactId>maven-eclipse-plugin</artifactId>

               <version>2.9</version>

                                     <inherited>true</inherited>

                                     <configuration>

                                               <classpathContainers>

                                                        <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>

                                                        <classpathContainer>org.eclipse.jdt.USER_LIBRARY/TOMCAT_6.0.14_LIBRARY</classpathContainer>

                                               </classpathContainers>

                                     </configuration>

                            </plugin>

                            <!--end - setting classpath to use an Eclipse user library for Tomcat (foreclipse:eclipse) -->

 

         修改完pom.xml之后,将需要检查的jsp文件放到mvn项目的”\src\main\webapp\文件夹下,用“mvn test”或者”mvn package”命令行即可检查出jsp是否存在错误。

         maven项目的目录结构可以参考:http://www.cnblogs.com/haippy/archive/2012/07/05/2577233.html

         执行上述命令行的时候实际上还有点疑问是在使用”mvn compile“命令行时并没有对jsp文件进行编译,而从maven的生命周期阶段示意以及pom.xml中goal的设定来看,应该是可行的……

         如此项目中的jsp文件错误信息如下:


           通过该实践,maven体现出了淋漓尽致的”约定优于配置“的开发原则,没有纷繁复杂的配置项,有的则是对于其配置的遵守以及遵守之后的便利。

         更多maven资料,可以查看”Maven权威指南中文版”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值