Eclipse的Dynamic Web Project支持直接热部署。通过部署到Eclipse内嵌的Server,可以立即看到修改后的效果,非常好用。Maven提供的依赖管理,便利的打war包命令,也非常好用。
现在已经有很多如何让Maven支持热部署的方式,但是貌似我还没有找到让Eclipse的Dynamic Web Project结合Maven的资料。如果贸然将一个pom.xml丢进工程目录,用maven打包的时候,会出现如下问题:
1. 找不到由项目依赖引入到类(这个问题不论是否和Maven整合,都会有,之前都是通过ant脚本,把依赖的工程打成jar包,再部署到WEB-INF/lib解决的)
2. Maven插件报“未设置webxml属性或web.xml不存在”。
对于问题2,是由于Eclipse的Dynamic Web Project默认工程布局与Maven不一致导致的。
分析后,发现可以对Eclipse做如下配置,解决如上问题:
1. 选中工程根文件夹图标,右键弹出菜单,选择Properties(或是使用Alt+Enter)。
2. 选择Deployment Assembly。这里是定义打包结构的地方。
3. 编辑窗口本质上一个源码(Source)到部署路径(Deploy Path)的映射。
4. 做如下映射:
a) /src/main/webapp -> /
b) /src/main/java -> /WEB-INF/classes
c) 添加的依赖工程,会自动被映射为/WEB-INF/lib下的jar包。
通过上面的配置可以搞定Dynamic Web Project与Maven的整合。
现在已经有很多如何让Maven支持热部署的方式,但是貌似我还没有找到让Eclipse的Dynamic Web Project结合Maven的资料。如果贸然将一个pom.xml丢进工程目录,用maven打包的时候,会出现如下问题:
1. 找不到由项目依赖引入到类(这个问题不论是否和Maven整合,都会有,之前都是通过ant脚本,把依赖的工程打成jar包,再部署到WEB-INF/lib解决的)
2. Maven插件报“未设置webxml属性或web.xml不存在”。
对于问题2,是由于Eclipse的Dynamic Web Project默认工程布局与Maven不一致导致的。
分析后,发现可以对Eclipse做如下配置,解决如上问题:
1. 选中工程根文件夹图标,右键弹出菜单,选择Properties(或是使用Alt+Enter)。
2. 选择Deployment Assembly。这里是定义打包结构的地方。
3. 编辑窗口本质上一个源码(Source)到部署路径(Deploy Path)的映射。
4. 做如下映射:
a) /src/main/webapp -> /
b) /src/main/java -> /WEB-INF/classes
c) 添加的依赖工程,会自动被映射为/WEB-INF/lib下的jar包。
通过上面的配置可以搞定Dynamic Web Project与Maven的整合。