如果你的项目使用maven构建的话,当项目要上线,部署到服务器上去的时候或许会碰见这样的问题。问题就是,服务器上没有maven的环境,也就是说,项目所依赖到的那些仓库(repository)中的jar包你需要单独提取出来上传到服务器中去,解决办法:
前期:在eclipse里安装完成Maven (具体参与前 Maven实战 ),并项目为’Maven webapp项目‘类型,以spring-petclinic 为例
办法1:mvn package
pom.xml :<packaging>是war的话, mvn package 的命令将项目依赖的jar包打到web-inf 下的lib文件夹,如图:
,完成后console会提示war包的位置信息
办法2:mvn assembly:assembly
在${project}/target 文件夹下发现新生成的 {artifactId}-jar-with-dependencies.jar 这个文件,命令执行的过程中,maven会将jar包所依赖的包导出,并且解压(unpackage),一并放在这个{artifactId}-jar-with-dependencies.jar包
注:pom.xml :
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
这个jar-with-dependencies是assembly预先写好的一个,组装描述引用(assembly descriptor)
办法3:按第三方包单独部署
a:修改pom.xml <descriptorRef>jar-with-dependencies</descriptorRef>路径,修改为:<descriptorRef>src/main/assembly/src.xml</descriptorRef>
b:于项目名称/src/main/assembly 下创建 src.xml文件:
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<unpack>false</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
</fileSet>
</fileSets>
</assembly>
c:再执行mvn assembly:assembly
这样在target文件夹中就会看见新创建出来的{artifactId}-jar-with-dependencies.jar 这个jar包
里面会将项目所依赖的所有第三方包按类型打包在里面