配置Maven项目自动编译

发布于 2014-12-09 | 更新于 2020-09-20

##Maven项目目录结构如下:

project
- src
- main
- java
- resources
- webapp
- WEB-INF
- classes
- lib
- target
- project-snapshot
- WEB-INF
- classes
- lib
- classes

其中 project-snapshot就是maven编译生成的项目目录了,我们一般使用这个目录对项目进行部署,这样问题来了:

每次改动JSP文件或者Java文件,都得重新用maven编译一下,以便生成代码到该目录,有没有方便点的做法呢?接下来就是啦。

让Maven项目自动编译:

为了让改写JSP之后无需重新编译,我们只有使用src/main/webapp/这个目录进行部署了,因为一般我们是直接改动里面的文件进行编码的;

lib目录

而jar包是maven从仓库下载过来的,为了能用上下载回来的jar包,我们可以把

target/project-snapshot/WEB-INF/lib

目录联接到

src/main/webapp/WEB-INF/lib

windows下通过`mklink /j`命令(假设项目在D:/dev目录下):

mklink /j “D:\dev\project\src\main\webapp\WEB-INF\lib” “D:\dev\project\target\project-snapshot\WEB-INF\lib”

这样就把maven下载的lib目录联接到部署目录webapp下了;

class目录

对于class目录,也是同样的方法,另外需要设置IDE的自动编译输出目录到:

target/project-snapshot/WEB-INF/classes

右击项目 -> properties -> Java Build Path -> 右边面板底部设置Default output folder;

直接运行main方法的问题

但是这样Eclipse下会有个问题,直接运行某个类的main方法,会提示如下错误:

java.lang.NoClassDefFoundError: me/arthinking/test/Demo
Caused by: java.lang.ClassNotFoundException: me.arthinking.test.Demo
at java.net.URLClassLoader1.run(URLClassLoader.java:202)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassLoader.findClass(URLClassLoader.java:190)atjava.lang.ClassLoader.loadClass(ClassLoader.java:306)atsun.misc.Launcher1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.LauncherAppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Exception in thread “main”

原因是没有读取到输出的classes文件,为此,我们可以把class编译输出目录设置为:

project/target/classes

这样就可以正常执行main方法了

把这个目录联接到webapp/WEB-INF/classes目录下即可。

编译目录设置如图:

20141204-java01

其他的配置文件目录需要联接到webapp目录,同上操作。

关于IDEA集成开发环境

据Ryan介绍,IDEA集成开发环境是不会存在找不到main方法的问题的;

另外我们也可以在pom.xml中配置classes文件的输出目录,把classes文件输出到webapp目录下,这样改写了Java文件之后需要使用maven编译下项目了。

pom.xml

D:\dev\project\webapp\WEB-INF\classes

本文作者: arthinking

本文链接: https://www.itzhai.commaven-setting-auto-compile.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。

请帅旋喝一杯咖啡

咖啡=电量,给帅旋充杯咖啡,他会满电写代码!

IT宅

关注公众号及时获取网站内容更新。