首先:项目上右击->configure->Convert to Maven Project 将项目转化为maven项目。 或者在.project文件中natures节添加
<natures>
<!-- ... -->
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<!-- ... -->
</natures>
完成pom.xml相关基础配置。然后修改build节使maven打包时兼容之前的项目路径配置。 ecplise 打开pom.xml文件选择effective POM 视图可以看到最终打包时的pom.xml的配置。
配置在pom.xml中<build>节下的
- <sourceDirectory>:即为java文件根目录 该路径是相对于pom.xml的相对路径
- <testSourceDirectory> 测试java文件根目录
- <outputDirectory> 编译后class存放路径
- <resources><resource><directory>即为配置文件根目录
- <finalName>maven install 后的项目名 默认为项目名-版本号
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<webXml>WebContent\WEB-INF\web.xml</webXml><!-- web.xml文件路径 -->
<!--设置项目根目录,默认为src/main/webapp -->
<webappDirectory>${project.basedir}\target\WebContent</webappDirectory>
<warSourceDirectory>${project.basedir}\WebContent</warSourceDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- 指定maven打包JDK -->
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
<skip>true</skip> <!-- true:跳过测试 -->
<encoding>UTF-8</encoding>
<compilerArguments>
<!-- 打包使需要添加的lib路径 -->
<extdirs>${project.basedir}\WebContent\WEB-INF\lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
尤其注意:
- warSourceDirectory : 项目webapp/webcontent路径
- webappDirectory :maven打包后生成的资源路径。
这样打包出来的war就是我们想要的结构了。
然后如果是ecplise+tomcat 启动项目的话,那么如果出现tomcat下项目结构不对,可以检查下.setter/org.eclipse.wst.common.component文件
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="ERCloud">
<wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/config"/>
<wb-resource deploy-path="/WEB-INF/lib" source-path="/target/WebContent/WEB-INF/lib"/>
<property name="java-output-path" value="/DEMO/target/WebContent/WEB-INF/classes"/>
<property name="context-root" value="DEMO"/>
</wb-module>
</project-modules>