Maven项目和Tomcat部署

本文介绍了如何创建Maven项目,包括使用`mvn archetype:generate`命令创建Webapp工程,以及通过Eclipse。接着讲解了Maven的构建与打包,配置本地库和源,以及依赖管理。然后详细阐述了Tomcat部署的多种方式,包括拷贝到webapps下、修改Server.xml文件以及增加自定义web部署文件。最后提到了Tomcat Manager部署,并提醒了修改tomcat-users.xml添加用户和角色的注意事项。
摘要由CSDN通过智能技术生成

1.创建一个maven project

(eclipse的就不说了)
mvn archetype:generate 固定
-DgroupId   组织标识(包名)
-DartifactId   项目名称
-DarchetypeArtifactId:

Archetype ID说明
maven-archetype-archetype一个样例原型
maven-archetype-j2ee-simple简单的J2EE应用程序样例
maven-archetype-mojoMaven插件样本的示例
maven-archetype-pluginMaven插件样本
maven-archetype-plugin-siteMave插件网站的样例
maven-archetype-portletJSR-268门户样例
maven-archetype-quickstartMaven工程样例
maven-archetype-simple一个简单的Maven工程
maven-archetype-siteMaven网站的样例,它演示了对诸如APT、XDoc和FML等文档类型的支持,并演示了如果把网站国际化(i18n)
maven-archetype-site-simpleMaven网站样例
maven-archetype-webappMaven的Webapp工程样例

其中 maven-archetype-webapp:Maven的Webapp工程样例和
maven-archetype-quickstart:Maven工程样例比较常用

-DinteractiveMode:false/true  是否使用交互模式 表示是否使用交互模式,交互模式会让用户填写版本信息之类的,非交互模式采用默认值

2.构建与打包常用

命令说明
mvn compile编译源代码
mvn test运行测试
mvn clean他会清空目录下的target文件夹
mvn site-deploy生产站点目录并打包
mvn install安装当前工程的包输出文件到本地仓库
mvn package打包
mvn jar:jar打成jar包
生成eclipse项目mvn eclipse:eclipse
mvn help:help查看帮助信息

3.Maven一些配置

指定Maven的本地库:修改conf \ setting.xml

<localRepository>存放路径</localRepository >

指定Maven源

<mirrors>
  <mirror> 
    <id>alimaven</id> 
    <name>aliyun maven</name> 
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
    <mirrorOf>central</mirrorOf> 
  </mirror>
</mirrors>

项目依赖:
B添加对A的依赖

<dependency>
     <groupId>com.project</groupId>
     <artifactId>project.A</artifactId>
     <version>0.0.1-SNAPSHOT</version>
</dependency>

C添加对B的依赖,同时排除对A的依赖:

<dependency>
       <groupId>com.project</groupId>
       <artifactId>project.B</artifactId>
       <version>0.0.1-SNAPSHOT</version>
       <exclusions>
          <exclusion>
               <groupId>com.project</groupId>
               <artifactId>project.A</artifactId>
          </exclusion>
       </exclusions>
</dependency>
parent聚合A、B、C三个项目(parent项目的包类型必须是pom)
<modules>
    <module>../project.A</module>
    <module>../project.B</module>
    <module>../project.C</module>
</modules>
A、B、C分别关联parent项目
<parent>
    <groupId>com.project</groupId>
    <artifactId>project.parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
这样A、B、C都能使用parent依赖的jar包。

Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。
    <properties>
        <servlet.version>2.5</servlet.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
然后在子项目里就可以添加servlet-api时可以不指定版本号,例如:
    <dependencies>
        <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
            </dependency>
    </dependencies>
dependencies相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。

exclusions(排除依赖)
假设A-->B,B-->C,但是A不想依赖C,就可以在A中配置依赖B时,排除对C的依赖
<dependency>
    <groupId>project.B</groupId>
    <artifactId>project.B</artifactId>
    <version>${version}</version>
    <exclusions>
        <exclusion>
            <groupId>project.C</groupId>
            <artifactId>project.C</artifactId>
        </exclusion>
    </exclusions>
</dependency>  
optional(可选依赖)
假设A-->B,B-->C,但是A不想依赖C,就可以在B中配置,对C的依赖不进行传递
<dependencies>  
    <dependency>  
      <groupId>ProjectB</groupId>  
      <artifactId>Project-B</artifactId>  
      <version>1.0</version>  
      <scope>compile</scope>  
      <optional>true</optional> 
    </dependency>  
</dependencies>  
对上述scope属性的说明
scope的分类

compile

默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。

test
scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。

runntime

runntime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已,说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSR×××的实现,对应的API jar是compile的,具体实现是runtime的,compile只需要知道接口就足够了。oracle jdbc驱动架包就是一个很好的例子,一般scope为runntime。另外runntime的依赖通常和optional搭配使用,optional为true。我可以用A实现,也可以用B实现。

provided

provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。

system

从参与度来说,也provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。

3.Tomcat部署项目

  1. 将项目拷贝到webapps下,然后启动服务器,Tomcat启动时将自动加载应用。这种方式比较简单,但是web应用程序必须在webapps目录下。Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。
  2. 修改Server.xml文件部署
    这种方式可以不必将项目拷贝到webapps下。方法如下,更改$CATALINA_HOME/conf/server.xml文件,
    找到以下内容:
<Context  path ="/wjw"  reloadable ="false"  docBase =""  workDir =""  />

path:是访问时的根地址,表示访问的路径;如上述例子中,访问该应用程序地址如下:http://localhost:8080/wjw/
reloadable:表示可以在运行时在classes与lib文件夹下自动加载类包。其中reloadable=”false”表示当应用程序 中的内容发生更改之后服务器不会自动加载,这个属性在开发阶段通常都设为true,方便开发,在发布阶段应该设置为false,提高应用程序的访问速度。
docbase:表示应用程序的路径。docBase可以使用绝对路径,也可以使用相对路径,相对路径相对于webapps。
workdir:表示缓存文件的放置地址。
3. 增加自定义web部署文件(推荐使用,不需要重启Tomcat )
这种方式和方法2差不多,但不是在Server.xml文件中添加Context标签,而是在conf /Catalina/localhost中添加一个xml文件,如wjw.xml.在Tomcat安装目录,各参数参见方法2中的标签的参数,或者你也可以自己新建一个XML文件。(注意此文件名将作为Context中的path属性值,不管文件里的path属性值如何设置也是无效的 ),将以下内容复制过去,修改相应路径即可。
Xml代码:

<Context  path =""  docBase =""  
        debug ="0"  privileged ="true"  reloadable ="false"  >  
</Context>

debug是设定debug level, 0表示提供最少的信息,9表示提供最多的信息
privileged设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet。
注:这些项目可以是war包,当是war包时它会自动解压,可以在server.xml中设置unpackWARs=”false” 就不自动解压了。

  1. Tomcat manger部署
    在tomcat下修改conf/tomcat-users.xml,添加用户
<role rolename="manager-gui"/>
<user username="wjw" password="123456" roles="manager-gui"/>

访问localhost:8080
这里写图片描述
选择Manger App
这里写图片描述

Context Path:项目的访问根地址
XML Configuration file URL:需要使用的配置文件
WAR or Directory URL :项目的地址,相当于上传

然后点击Deploy

注:关于用户的各种roles权限
manager-gui - allows access to the HTML GUI and the status pages
manager-script - allows access to the text interface and the status pages
manager-jmx - allows access to the JMX proxy and the status pages
manager-status - allows access to the status pages only

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值