在学习jfinalshop-3.0-web的项目中,因为是用maven构建项目的,我一直想做到:令编译后的classes目录(target/classes),跑到WEB-INF目录下(target/m2e-wtp/web-resources/WEB-INF/classes)。
于是,我在pom.xml中修改build节点,如下:
... ... 以上省略 ... ...
<build>
<finalName>jfinalshop-3.0-web</finalName>
<outputDirectory>target/m2e-wtp/web-resources/WEB-INF/classes</outputDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<webResources>
<resource>
<directory>src/main/webapp</directory>
</resource>
</webResources>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
也就是说,加入一个<outputDirectory>节点,希望maven在编译的时候,能够将classes文件存入WEB-INF目录下。
不过,maven没有这样做!它只是将src/main/resources下的配置文件编译到了WEB-INF/classes目录下;而src/main/java目录下的java没有编译过去,依旧存放在target/classes目录下。
没有办法!这只是一个小问题,我不能在这个事情上耽误太多时间,于是写了一个windows批处理放在pom.xml的同级目录下。该批处理内容如下:
xcopy /s /y target\classes target\m2e-wtp\web-resources\WEB-INF\classes
rd /s /q target\classes
其中:第一行xcopy 将target/classes目录下的文件与目录复制并替换到WEB-INF/classes目录下
第二行rd 将target/classes目录 强行删除
然后,配置tomcat虚拟目录,让其自动加载。如果我在项目中修改了java文件,maven会编译java为class存放在target/classes目录下;然后,我运行这个批处理,替换WEB-INF下的classes文件;最后tomcat自动加载!搞定!END!