maven改java文件自动部署_配置Maven项目自动编译

##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.URLClassLoader$1.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.Launcher$AppClassLoader.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目录下即可。

编译目录设置如图:

d60e41e4a81929d66323771e49025b20.png

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

关于IDEA集成开发环境

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

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

pom.xml

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值