原文地址: https://blog.csdn.net/xleyou/article/details/21542557
我们在生产环境上部署Web应用时,可能把想把Web应用依赖的jar包都放在容器的类路径下,不打到War包中,这样,升级时,不用上传很大的文件了(还可能有别的考虑)。打出这种瘦版的War包,需要使用maven war plugin,参考:
http://maven.apache.org/plugins/maven-war-plugin/examples/skinny-wars.html
需要在pom中,加入如下插件配置:
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<!-- In version 2.1-alpha-1, this was incorrectly named warSourceExcludes -->
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
这样,打出的War包就没有依赖包了。但你肯定希望依赖包能拷由到某个目录下,你好把它们都拷到Web容器的某个类路径下(你肯定不想到本地仓库一个一个去找)。那就需要使用maven dependency plugin了。
http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-project-dependencies.html
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
上配置表示要把dependency的包都拷贝到target的lib路径下。
上配置在maven3.0.2和jdk1.6.0_03(32位)环境下测试过