Maven远程部署,Tomcat远程调试

一. Maven远程部署

12bet,部署之前先用Maven创建Java Web项目和安装好Tomcat。用Maven创建Java Web项目请移步MAVEN介绍和项目构建。

1.1. 在服务器段安装tomcat,更改conf文件夹下tomcat-users.xml

tomcat有4种角色 manager-gui,manager-status,manager-script,manager-jmx,他们有各自不同的权限。

  • manager-gui:可以使用Html接口。
  • manager-status:只能进入”Server Status”页面。
  • manager-script:可以进入”Server Status”页面,并且可以使用纯文本接口。
  • manager-jmx:可以进入”Server Status”页面,并且可以使用 JMX 代理接口。

12bet,个人常用的是 manager-gui 和 manager-script 角色,要使用 Maven 远程部署 manager-script 角色必须配置。12bet,下面实例中配置了用户 liu 的 manager-script 和 manager-gui 角色。

<role rolename="manager-gui"/>  
<role rolename="manager-script"/>  
<user name="liu" password="123" roles="manager-gui,manager-script" />  

1.2. 在项目的pom.xml中引入tomact-maven-plugin插件,并对插件进行配置

12bet,在pom.xml中找到build中的plugins标签,在该标签下新建plugin标签,设置如下:

<plugins>  
    ...
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tomcat-maven-plugin</artifactId>
        <configuration>
            <url>https://tseg4:8080/manager/text</url>
            <username>liu</username>
            <password>123</password>
            <path>/rest</path>
        </configuration>
    </plugin>
    ...
</plugins>  
  • groupId和artifactId是固定的。
  • url中的tseg4是我的tomcat所在的域名,也可以是ip地址,8080是tomcat默认的端口,12博体育,可以在tomcat的conf下的server.xml中修改。
  • username和password是上面tomcat-users.xml文件中配置好的。
  • path可以不配置。

1.3. 配置eclipse下的run configuration

  1. 项目文件夹右键 -> Run as -> Run configurations,出来的面板左侧的Maven build新建一个配置,Name随意,Base Directory选择当前项目,Goals为tomcat:deploy

  2. tomcat:deploy为首次发布时使用,之后使用这个就会报错,因为tomcat下已经有该项目,此时应该按以上步骤新建一个配置,只是Goals设置为tomcat:redeploy,之后重复发布使用redeploy。

  3. 项目文件夹右键 -> run as -> 3 maven build,选择deploy或者redeploy。当然必须先启动tomcat才行
  4. 12博体育,对于是否发布成功可以到tomcat的webapp下检查。如果发布不成功,就得检查设置是否有问题了,特别是端口的设置。

二. Tomcat远程调试

2.1. tomcat设置

  • 在tomcat的startup.sh文件的正文的第一行添加:
declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999"  
  • 运行Linux上的tomcat/bin/startup.sh启动tomcat。此时tomcat会监听9999端口,接受远程调试。
  • 项目文件夹右键 -> debug as -> debug configurations,出来的面板左侧remote java application新建一个配置。Name随意,project为当前项目,host为tomcat所在的服务器ip或域名,port为之前配置的9999端口。
  • 点击面板debug按钮即可启动远程调试。设置好断点,在浏览器中访问你的web项目,触发断点即可开始调试。

三. 问题

使用新的maven-compiler-plugintomcat7-maven-plugin

<build>  
        <finalName>rest</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <inherited>true</inherited>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>    
                <configuration>
                    <url>${tomcat.url}/manager/text</url>
                    <username>${tomcat.user}</username>
                      <password>${tomcat.pwd}</password>
                    <path>${tomcat.project}</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

1.编译时会提示错误,首先建议在命令行中使用mvn package命令,此操作会下载新的依赖包。

2.然而进行远程调试时会提示错误:

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?  

需要将编译环境改为jdk而不是默认的jre,具体操作如下:

Window > Preferences > Java > Installed JREs,将jdk加入而不是使用jre

此外更改项目build path选择jdk:

3.发布和重新发布命令修改为tomcat7:deploytomcat7:redeploy,此配置也是兼容tomcat8的。

Author image
关于 superlin
Beijing, CN 主页
The reason why a great man is great is that he resolves to be a great man.
默认颜色 边栏居左 边栏居右