一. 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
项目文件夹右键 -> Run as -> Run configurations,出来的面板左侧的Maven build新建一个配置,Name随意,Base Directory选择当前项目,Goals为tomcat:deploy
tomcat:deploy为首次发布时使用,之后使用这个就会报错,因为tomcat下已经有该项目,此时应该按以上步骤新建一个配置,只是Goals设置为tomcat:redeploy,之后重复发布使用redeploy。
- 项目文件夹右键 -> run as -> 3 maven build,选择deploy或者redeploy。当然必须先启动tomcat才行。
- 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-plugin
和tomcat7-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:deploy
和tomcat7:redeploy
,此配置也是兼容tomcat8的。