Idea+Maven+Tomcat熱部署


注意,我是本地測試的,貧困的我沒錢買服務器遠程測試。

開發工具:Idea 管理工具:apache-maven-3.5.2 服務器:apache-tomcat-7.0.55

1、添加Tomcat賬戶:

   <role rolename="manager-gui"/>
   <role rolename="manager-script"/>
   <user username="admin" password="password" roles="manager-gui,manager-script" />

2、配置maven和tomcat關聯關系,賬號密碼同上配置,在settings.xml中配置,我是配置在%MAVEN_HOME%\conf\settings.xml下的,自定義的settings.xml路徑下配置是否有效可以自己嘗試

      <server>
         <id>TomcatServer</id><!--配置你的服務器名-->
         <username>admin</username>
         <password>password</password>
      </server>

3、Maven引入熱部署需要的包,pom.xml如下,其中<server>TomcatServer</server>與上面配置的服務器名相同:

<plugins>
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <url>http://127.0.0.1:8080/manager/text</url> 
            <server>TomcatServer</server>
            <update>true</update>
            <!--<path>/MavenBuilder##version</path>-->
            <path>/MavenBuilder</path>
        </configuration>
    </plugin>
</plugins>

4.修改tomcat配置(走投無路了試試,說不定有效),路徑%JAVA_HOME%\conf\Catalina\localhost\manager.xml 

<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
             <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>

以上主要配置完成后,很多人會發現報各種奇怪錯誤:

注意點1:不要太相信自己,仔細檢查tomcat登錄賬號,密碼,還有服務id是否是匹配的。

注意點2:<url>http://127.0.0.1:8080/manager/text</url> 不同的tomcat版本配置路徑可能不同,可能是<url>http://127.0.0.1:8080/manager/html</url>

注意點3:<update>true</update>這個配置如果沒有,你第二次部署會撲街,因為已經部署過一次,同名項目部署第二次導致。

注意點4:包沖突或者版本不對,pom.xml配置如下:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

注意點5:搞清原理,熱部署主要的作用是在不關閉服務器的時候添加或修改項目,tomcat必須要開着,並且保證能訪問manager手動管理里面的項目。

注意點6:maven指令是tomcat7:deploy 別點錯了。

注意點7:pom.xml中的<packaging>war</packaging>不要漏掉了。

注意點8:熱部署導致內存溢出的問題配置如下:

pom.xml:

<dependency>
   <groupId>se.jiderhamn.classloader-leak-prevention</groupId>
   <artifactId>classloader-leak-prevention-servlet</artifactId>
   <version>2.1.0</version>
</dependency>

web.xml(放在web.xml的最上方):

<!--處理熱部署導致的內存溢出-->
<listener>
  <listener-class>se.jiderhamn.classloader.leak.prevention.ClassLoaderLeakPreventorListener</listener-class>
</listener>

謝謝之前被我參考過的各位博主。。。參考太多記不住了,抱歉

貼一張成功的圖,表達一下偶不是騙紙。

Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project XXXXXX: Cannot invoke Tomcat manager: Connection reset by peer:

上面的報錯信息用來提高搜索到的概率,請無視。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM