Maven 打包时加入本地依赖包
问题描述
Maven 工程部署到 Tomcat 后,启动报错,找不到相应的类文件:
java.lang.NoClassDefFoundError: com/vmware/vim25/InvalidPropertyFaultMsg
问题原因
查看报错信息,发现找不到的类都是本地依赖包中的类;在 Tomcat webapp 应用部署路径下 lib 文件中没有本地依赖 jar 包。
查看资料知道 Maven 打包时默认不加入本地依赖的jar包,要将依赖的本地 jar 包一并加入打包后的 war 包,需要在 pop.xml 文件中进行设置。
解决方法
在 build 下加入 plugin 设置,默认将 lib (工程目录下)下的所有 jar 文件打包到 WEB-INF/lib 下,也是可以打包其他的文件(如xml 、properties等),配置如下:
<build>
<finalName>appName</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<webResources>
<resource>
<directory>lib/</directory>
<targetPath>WEB-INF/lib</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
发现还是没把本地jar包打入war包。
后面偶然搜到使用maven打war,本地的jar包没有被包含这篇文章,
其可行的解决办法:
修改 lib 的目录到 /src/main/webapp/WEB-INF/lib/,
这样 package 打包时就自然会把 jar 文件复制到 war 包中。