使用Maven打出瘦版的WAR包

17 篇文章 0 订阅

原文地址: 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位)环境下测试过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值