`

maven生成war包的两种方式

 
阅读更多
http://www.iteye.com/topic/545708
war包即对WEB应用程序进行打包,用于应用容器的部署。如在jboss中只要把war包丢入deploy目录下即可发布自己的应用了。打包方式有很多中,很多工具本身就支持此功能。下面主要介绍通过maven来操作的两种方式:
方法一:
   即第一反应的那种啦,就是利用maven的maven-war-plugin。
<build>   
  <plugins>   
  ......   
   <plugin>   
      <groupId>org.apache.maven.plugins</groupId>   
      <artifactId>maven-war-plugin</artifactId>   
      <version>2.0.2</version>   
      <configuration>   
         <warSourceExcludes>WEB-INF/lib/log4j-${log4j.version}.jar</warSourceExcludes>   
      </configuration>   
   </plugin>   
  </plugins>   
</build>
 

当然你可以指定war包的名称,输出的目录,webapp目录等等。
可以在需要打包的工程中直接设定:<pom>war</pom>
这样在install的时候就会对此工程生成相应配置的war包,原来此web工程依赖的其他工程全部会以jar包的形式出现在lib目录下,所以不需要再去关心war包中集成的jar包是否完整,maven已经帮你做完了。

顺便提一句,在jboss中发布war包,如果包中包含log4j.jar,会报错,所以在本例中将此jar包排除在外。

方法二:
不用war插件,而是用到另外三个插件:maven-dependency-plugin 、maven-antrun-plugin 、 build-helper-maven-plugin
下面分别说明下着三个插件在此过程扮演的角色:
maven-dependency-plugin :相当于数据收集器,该依赖那些jar包,该加载那些resource信息。
maven-antrun-plugin:完成收集完文件夹的压缩和包的重命名。
build-helper-maven-plugin:让压缩包拥有男人本色,oh sorry 是war本色。

在写pom.xml配置前,先说明下目录结构
root
|
|---template
|
|---wardir

其中这两个目录都作为maven的独立工程,下面要写配置在wardir下的pom.xml中
<build>  
   <plugins>  
      <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-dependency-plugin</artifactId>  
        <version>2.0</version>  
        <executions>  
           <execution>  
              <id>create-structure</id>  
              <phase>process-resources</phase>  
               <goals>  
                   <goal>unpack</goal>  
                </goals>  
                <configuration>  
                    <artifactItems>  
                       <artifactItem>  
                          <groupId>GROUPID</groupId>  
                           <artifactId>template</artifactId>  
                       </artifactItem>  
                 </artifactItems>  
                 <outputDirectory>  
                     ${project.build.directory}/${assembly.name}.war  
                  </outputDirectory>  
                </configuration>  
             </execution>  
             <execution>  
                 <id>copy-libs</id>  
                  <phase>process-resources</phase>  
                   <goals>  
                      <goal>copy</goal>  
                   </goals>  
                   <configuration>  
                      <artifactItems>  
                         <artifactItem>  
                             <groupId>jdom</groupId>  
                              <artifactId>jdom</artifactId>  
                          </artifactItem>  
                                ......  
                       </artifactItems>  
  
                        <outputDirectory>${project.build.directory}/${assembly.name}.war/WEB-INF/lib</outputDirectory>  
                    </configuration>  
                 </execution>  
            </executions>  
       </plugin>  
        <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-antrun-plugin</artifactId>  
            <version>1.3</version>  
            <executions>  
               <execution>  
                  <id>copy-config</id>  
                  <phase>process-resources</phase>  
                  <goals>  
                      <goal>run</goal>  
                   </goals>  
                   <configuration>  
                   <tasks>  
                       <copy todir="${project.build.directory}/${assembly.name}.war">  
                           <fileset dir="src/main/resources" />  
                       </copy>  
                       <zip destfile="${project.build.directory}/${assembly.name}-${project.version}-war.zip">  
                            <zipfileset dir="${project.build.directory}/${assembly.name}.war" includes="**\*.*"  excludes="*.zip" />  
                       </zip>  
                       <copy file="${project.build.directory}/${assembly.name}-${project.version}-war.zip"  
                                    tofile="${project.build.directory}/${assembly.name}-${project.version}.war" />  
                     </tasks>  
                     </configuration>  
                </execution>  
            </executions>  
       </plugin>  
       <plugin>  
           <groupId>org.codehaus.mojo</groupId>  
           <artifactId>build-helper-maven-plugin</artifactId>  
           <version>1.4</version>  
           <executions>  
              <execution>  
              <id>attach-artifacts</id>  
              <phase>package</phase>  
                 <goals>  
                     <goal>attach-artifact</goal>  
                 </goals>  
                 <configuration>  
                      <artifacts>  
                         <artifact>  
                             <file>${project.build.directory}/${assembly.name}-${project.version}.war</file>  
                              <type>war</type>  
                          </artifact>  
                       </artifacts>  
                  </configuration>  
               </execution>  
            </executions>  
         </plugin>  
    </plugins>  
</build>
 
当然这种方式也可以用来打ear包。对于打无页面操作系统的war包,个人认为用后者更灵活,当然建立假web工程,再依赖工程,通过第一种方式同样可以达到最终的结果。看个人喜好了。

结束语:maven真的很强大!
分享到:
评论

相关推荐

    浅谈maven的jar包和war包区别 以及打包方法

    在Maven中,jar包和war包是两个常见的打包格式,但它们之间有着很大的区别。本文将对Maven的jar包和war包进行详细的比较,并介绍如何使用Maven进行打包。 一、Maven的jar包 Maven的jar包是一种常见的打包格式,...

    IDEA 如何打war包

    在Java开发领域中,WAR(Web Application Archive)包是一种用于部署Web应用程序的标准格式。本文将详细介绍如何使用IntelliJ IDEA工具来构建WAR包。 #### 一、背景介绍 WAR包通常包含Web应用程序的所有类文件、...

    基于Maven+SVN自动打包

    【自动打包】:自动打包是指通过脚本或工具自动化执行构建过程,将源代码编译、测试并通过打包工具(如Maven的`mvn package`命令)生成可部署的文件(如JAR、WAR)。这大大减少了手动操作的时间,降低了错误率,尤其...

    maven 一键打包

    如果项目配置正确,这将生成最终的可部署包。 ### 集群部署 对于需要在多台服务器上部署的应用,可以使用Maven的`deploy`生命周期阶段,配合特定的插件如`maven-deploy-plugin`,将打包后的文件自动上传到远程...

    springMVC和Maven包

    SpringMVC和Maven是Java开发中两个至关重要的框架,它们在构建现代企业级Web应用程序时发挥着核心作用。SpringMVC是Spring框架的一部分,专门用于处理Web请求和响应,而Maven则是一个项目管理工具,它简化了构建、...

    portlet项目war包二

    这些工具能帮助开发者管理和构建portlet项目,自动化WAR包的生成。 5. **部署与测试**:portlet应用通常会被部署到门户服务器上进行测试和运行。开发者需要了解如何配置服务器以支持portlet,以及如何通过服务器...

    关于maven的资源依赖介绍

    获取 jar 包信息通常有两种方式: - 手动搜索:访问 Maven 中央仓库网站(https://search.maven.org/),输入包名搜索。 - 使用命令行工具:如 `mvn dependency:get`,Maven 可以直接从命令行获取并下载指定的依赖。...

    apache-maven-3.6.0.rar

    通过这些生命周期阶段,开发者可以轻松地进行单元测试、集成测试、生成文档、创建JAR或WAR包等任务。 Maven的插件系统允许扩展其功能,如使用maven-javadoc-plugin生成API文档,maven-surefire-plugin运行测试,...

    Maven学习笔记

    在Web项目中,通常会使用maven-war-plugin插件来打包Web应用,生成WAR文件。 Maven的安装和配置是使用Maven进行项目管理的第一步。下载Maven的压缩包,并解压到本地目录中。然后需要将Maven的bin目录添加到环境变量...

    maven 简单使用教程

    - Maven可以生成WAR文件,方便部署到Web服务器。 总的来说,Maven通过标准化的构建流程和依赖管理,极大地简化了Java项目的构建工作,同时也降低了团队协作的复杂性。通过熟练掌握Maven的使用,开发者可以更专注于...

    Izpack Maven打包 第二篇

    - `target` 目录是Maven生成的输出目录,包括编译后的类文件、打包的JAR或WAR文件,以及最终的Izpack安装包。 - `.settings` 目录包含Maven的用户级配置,如全局插件仓库设置等。在集成Izpack的过程中,可能需要在...

    Eclipse项目War和Jar

    其中最常见的两种形式是WAR和JAR包。WAR包主要用于部署Web应用程序,而JAR包则常用于打包Java类库或独立的应用程序。本文将详细介绍如何在Eclipse IDE中将项目打包成WAR和JAR包,并提供具体的步骤指导。 #### 二、...

    maven+myeclipse

    Maven是Apache软件基金会开发的一个项目管理工具,它通过一个统一的构建过程和约定优于配置的原则,帮助开发者管理项目依赖、构建工件,并提供了一种标准化的方式来组织项目结构。Maven的配置文件是pom.xml,它定义...

    maven velocity

    ** Maven与Velocity整合详解 ** Maven和Velocity都是在Java开发中非常重要的工具。Maven是一个项目管理和综合工具,它帮助开发者管理...通过理解和实践,开发者可以更好地掌握这两种工具,提升开发效率和代码质量。

    0508GoodsContent的Maven项目包

    5. `target`:这是Maven构建过程中生成的目录,包含了编译后的字节码文件(`.class`)、打包的JAR或WAR文件、以及构建过程中的临时文件。Maven通过`clean`、`compile`、`test`、`package`等生命周期阶段来管理这个...

    maven安装教程

    创建Maven项目一般有两种类型:Maven桌面项目和MavenWeb项目。在创建Maven桌面项目时,你需要选择合适的项目目录结构骨架,输入项目相关信息,Maven将自动生成项目的目录结构。如果你的网络配置有误或者网络连接问题...

    0513student的Maven项目包

    5. `target`:这个目录是Maven在构建过程中生成的临时和最终输出文件的存放地,比如编译后的class文件、打包的jar或war文件、测试结果等。 综合以上分析,"0513student的Maven项目包"是一个使用Java语言开发的项目...

    maven的优缺点 项目

    Pom:文件夹,jar和war文件,mavenProject:一个项目,可以放jar和war包,通过pom,一般新创建的maven Project是POM 3.4.创建一个Maven Model 最外面的项目是MavenProject,其它的全部是Maven Model 3.4.1.创建JAR 目录...

    maven3安装教程

    现在,Eclipse 将自动生成一个基于 Maven 架构的新项目,你可以开始编写代码和管理依赖了。 ### 六、使用 Maven 命令行构建项目 1. 在你的项目根目录下,找到 `pom.xml` 文件,这是 Maven 项目的配置中心。 2. ...

    maven~3.6.1.zip

    在给定的"maven~3.6.1.zip"压缩包中,包含的是Maven 3.6.1的安装包,提供两种格式:`apache-maven-3.6.1-bin.tar.gz`和`apache-maven-3.6.1-bin.zip`,供用户根据系统环境选择合适的安装方式。 ### Maven 的核心...

Global site tag (gtag.js) - Google Analytics