`
AlexanderMahone
  • 浏览: 8422 次
社区版块
存档分类
最新评论

maven web项目开发

阅读更多

 

linkin: 
cargo(服务器部署):http://cargo.codehaus.org/
maven commands
描述jetty插件 :mvn help:describe -Dplugin=org.mortbay.jetty:jetty-maven-plugin -Ddetail
描述jetty:stop goal: mvn help:describe -Dcmd=jetty:stop -Ddetail
启动jetty: mvn jetty:run
默认的端口停止jetty: mvn jetty:stop -DstopPort=9999

标准的maven的web项目的布局是一个src/main/webapp目录,这里边放着所有以前构建j2ee web项目的目录webroot,(WebContent)中的一切静态文件(不包括lib和class),在执行mvn package 构建的时候,maven的war打包插件会从这个目录中抽取静态文件打包成.war文件。需要注意的是其他maven插件也会从这个标准的布局中执行他们的执行过程。比如jetty插件。

以下是自定义web应用静态文件的maven构建示例:

1.声明war的打包方式。
<packaging>war</packaging>
2.声明maven 处理资源文件的编码,和指定web.xml文件路径:(如果采用标准的maven布局,这个属性(maven.war.webxml)是不需要的)
<properties >
    <!--通过此属性覆盖maven自带的多种插件的默认编码方式 -->
    <project.build.sourceEncoding >utf-8</project.build.sourceEncoding>
    <webapp.dir>${basedir}/WebContent</webapp.dir>
    <!-- 指定webapp的web.xml文件路径 -->
    <webapp.webxml>${webapp.dir}/WEB-INF/web.xml</webapp.webxml>
       <jetty.webdefault.xml>${basedir}/src/test/resources/webdefault.xml</jetty.webdefault.xml>
  </properties >
3.自定义war插件的配置,手动指定指定webapp的目录
<build>
<!--这个属性是用来打包成war格式的命名,会覆盖掉 maven本身带版本号的命名方式 -->
<finalName >MavenWebBuildDemo</finalName>
<build>
<plugins>
   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.3</version>
      <executions>
        <execution>
          <id>extract-web-resource</id>
          <phase>package</phase>
          <goals>
            <goal>war</goal>
          </goals>
          <inherited>false</inherited>
          <configuration>
            <warSourceDirectory>${webapp.dir}</warSourceDirectory>
          </configuration>
        </execution>
      </executions>
    </plugin>
          <!--- Generate Exploded War Dir -->
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <executions>
          <execution>
            <id>generate-exploded-war</id>
            <phase>package</phase>
            <goals>
              <goal>exploded</goal>
            </goals>
            <inherited>false</inherited>
            <configuration>
              <warSourceDirectory>${webapp.dir}</warSourceDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
   </plugins>
 </build>
4.用Jetty Plugin以disassebled方式部署应用
a.配置jetty插件
<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>8.1.8.v20121106</version>
  <configuration>
    <webAppSourceDirectory>${webapp.dir}</webAppSourceDirectory>
    <scanIntervalSeconds>10</scanIntervalSeconds>
    <webAppConfig>
      <contextPath>/</contextPath>
      <descriptor>${webapp.webxml}</descriptor>
            <!--
               解决jetty对css,javascript等的静态文件的锁定问题(工作空间更新css,javascript文件,但是没有任何效果)
               详情: https://www.assembla.com/spaces/liftweb/wiki/Fix_file_locking_problem_with_jettyrun
               -->
      <overrideDescriptor>${jetty.webdefault.xml}</overrideDescriptor>
    </webAppConfig>
    <stopKey>foo</stopKey>
    <stopPort>9999</stopPort>
  </configuration>
</plugin>
b.配置settings.xml文件,
这一步是用于简化maven运行jetty的命令。因为只有官方插件才默认支持简化的语法。一般第三方的插件需要mvn <groupId>:<artifactId>:<version>:<goalName> 这种语法。配置了之后就可以通过mvn jetty:run 这种简化的语法启动jetty

<pluginGroups>
     <pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>
c.启动jetty:3
定位到项目目录,jetty:run就可以启动程序了。
d.关闭jetty:
mvn jetty:stop -DstopPort=<stop value> -DstopKey=<stop key>

5.生成site,会在${maven.build.t
a.配置site plugin
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-site-plugin</artifactId>
  <version>3.2</version>
  <configuration>
    <!--
     配置maven site插件的report插件,
     由于pmd生成报告会试图调用jxr插件来生成引用交叉,
     而jxr插件的调用会试图关联javaDoc所以最好3个插件
     一起声明。当然pmd插件也可以单独使用。用正常的插件配置
     之后mvn pmd:pmd就ok了
     -->
    <reportPlugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.3</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>2.7.1</version>
        <configuration>
          <targetJdk>1.6</targetJdk>
          <aggregate>true</aggregate>
        </configuration>
      </plugin>
    </reportPlugins>
  </configuration>
</plugin>
b.mvn site:site
Appendix A: issue reference
Bean type class com.opensymphony.xwork2.ObjectFactory with the name xwork has already been loaded by bean  jetty maven...

这种错误是由于jetty重复载入了jar包,一般出现这种问题是由于你自定义了web应用的静态文件(html, jsp, vm, js, css..)目录(默认是src/main/webapp)。这个目录的WEB-INF/lib下包含了web应用的jar包,但是maven构建的时候,它又会从local repository(本地库)中载入jar包,所以就会引起这样的冲突。这时只要删除WEB-INF/lib下的目录就好了并在eclipse中,在工程上右键->properties->deployment assembly->将deploy path一栏中的WEB-INF/lib干掉就

多模块构建

多模块构建的时候,如果直接从web子模块启动jetty,它就会报找不到父工程的错误。只要切换到父工程目录mvn install 将父工程的pom部署到local repository就ok了

the parameters 'stopPort', 'stopKey' for goal org.mortbay.jetty:jetty-maven-plugin:8.1.8.v20121106:stop are missing or invalid

缺少stopPort,和stopPort参数来停止jetty。如果没有在配置中指定,stopPort属性,运行mvn jetty:stop -DstopPort=9999就可以了。默认的端口9999。如果配置了则需要指定相应的2个属性值。




分享到:
评论

相关推荐

    基于maven创建web项目

    基于maven创建web项目 maven是一种基于项目对象模型(Project Object Model,POM)的项目管理工具,由Apache软件基金会开发和维护。maven提供了一种标准化的方式来构建、打包和部署项目,它可以帮助开发者简化项目...

    maven web项目 Demo

    通过学习和实践【maven web项目 Demo】,开发者能够掌握Maven的使用,从而更有效地管理Web项目,提升开发效率。同时,这也会为理解和应用其他Java Web框架,如Spring、Struts、Hibernate等奠定基础。

    maven项目转换WEB项目

    然而,对于习惯于使用Eclipse IDE开发Web项目的开发者来说,Maven项目可能会显得较为复杂。本文将详细介绍如何将一个Maven项目转换为Eclipse中的Web项目,并解释Maven的基本目录架构。 首先,让我们了解Maven项目的...

    一个简单的maven web 项目

    Maven在其中的作用是管理Java Web项目中的所有依赖,使得开发者无需手动下载和管理库文件,只需在POM.xml文件中声明依赖即可。 【压缩包子文件的文件名称列表】:WEB-INF、jsp、META-INF 这三个文件夹在Java Web...

    idea创建maven web项目标准结构源码

    总之,"idea创建maven web项目标准结构源码"是一个方便开发者快速上手的模板,通过理解和掌握这个结构,可以更高效地进行Java Web开发,利用Maven的便利性,以及Idea的智能编码功能,提升开发效率。

    Maven Web基础搭建示例

    在构建Web项目时,Maven能够自动化处理构建过程,包括编译、测试、打包、部署等步骤,极大地提高了开发效率。本示例将详细介绍如何使用Maven搭建一个基础的Web项目,并解决创建过程中可能出现的报错问题。 ### 一、...

    用idea创建的maven web项目

    【标题】"用idea创建的maven web项目"是一个基于IntelliJ IDEA(简称idea)开发工具构建的Maven Web应用程序。Maven是Java领域的一个项目管理和构建工具,它通过提供一套规范化的项目结构和自动化的构建流程,帮助...

    mavenWeb空项目

    【标题】"mavenWeb空项目"所涉及的知识点主要...综上所述,"mavenWeb空项目"是一个包含Java Web开发基础的项目模板,利用Maven进行构建管理和单元测试,为开发者提供了一个良好的起点,便于快速开发和迭代Web应用程序。

    mavenweb项目创建demo

    总的来说,"mavenweb项目创建demo"是一个全面的教程,涵盖了从基础的Maven配置到Web应用的开发、构建和测试。通过学习和实践,开发者可以更好地掌握Maven在Web开发中的应用,提高项目管理的效率。在实际开发过程中,...

    使用springmvc、hibernate、maven开发的web实例项目。

    通过学习和实践这个项目,开发者可以深入理解Spring MVC、Hibernate和Maven的集成,提升Java Web开发能力。同时,这个项目也是进一步探索其他Java Web技术,如Spring Boot、MyBatis等的良好起点。

    sping springmvc mybatis框架的maven web项目

    本人搭建的ssm框架的maven web项目,用maven管理项目的jar包,项目架构搭好,用的都是现阶段最新的jar包,日志输出用log4j,controller层/service层/bo层/dao层都整合好,测试通过,可以直接用作项目开发

    maven构建web项目

    总之,使用Maven构建Web项目极大地提高了开发效率,简化了依赖管理,使得开发者可以专注于编写业务代码,而无需关心构建细节。结合Tomcat这样的Web服务器,我们能够轻松地部署和运行Java Web应用。在实际开发中,...

    Intellj构建和部署Maven Web项目详解

    ### Intellj构建和部署Maven Web项目详解 #### 一、Maven简介与功能概述 Maven是一款项目构建和管理工具,它提供了一系列的方法帮助开发者管理构建过程、文档、报告、依赖关系、源码控制系统(SCMs)、发布流程以及...

    maven web项目配置

    本篇将深入探讨"Maven Web项目配置"的相关知识点。 一、Maven简介 Maven是由Apache软件基金会开发的项目管理工具,它通过一个项目对象模型(Project Object Model, POM)来管理项目,POM包含了项目的配置信息,如...

    maven开发环境搭建

    ### Maven开发环境搭建详解 ...通过上述步骤,你可以成功地在Eclipse中搭建基于Maven的Java Web项目开发环境,并进行调试和服务配置。这不仅能够提高开发效率,还能够帮助开发者更好地管理项目的依赖关系。

    spring-boot-maven的web完整项目框架

    以上就是 "Spring Boot Maven Web 完整项目框架" 的核心内容,涵盖 Spring Boot 的自动化配置、Maven 的依赖管理和构建功能,以及 Web 开发的相关知识点。通过这个项目,你可以快速搭建一个功能完善的 Web 应用,并...

    maven-web-test.zip

    本文将深入探讨如何使用Eclipse IDE创建一个Maven Web项目,并结合"Maven-web-test.zip"这个压缩包文件,理解相关知识点。 1. **Maven简介** Maven是Apache软件基金会开发的项目管理工具,它通过使用一种标准的...

    第一个eclipse maven web项目实例

    "第一个eclipse maven web项目实例" 这个标题明确指出这是一个基于Eclipse集成开发环境的Maven Web项目示例。它表明我们正在处理一个使用Maven构建工具,且能直接在Eclipse中运行的Web应用程序项目。 描述中提到,...

    Maven Web项目

    【Maven Web项目】是基于Java的Web应用程序开发框架,它使用Maven作为构建工具,SSM框架(Spring、SpringMVC和MyBatis)作为核心组件。在本项目中,我们将深入探讨如何构建和管理一个Maven Web项目,以及SSM框架在...

    mavenweb项目

    【 MavenWeb 项目详解】 "MavenWeb 项目"是一个基于Maven构建的Web应用程序示例。Maven是一个强大的项目管理工具,它可以帮助开发者管理和构建Java项目,极大地简化了项目的构建、依赖管理和文档生成过程。本项目是...

Global site tag (gtag.js) - Google Analytics