Jenkins如何将war文件部署到Tomcat 8?

11

我正在同一台服务器上运行Jenkins 1.6(也尝试了Jenkins 2.0),并且在该服务器上安装了Tomcat 8。我需要将Maven多模块应用程序部署到Tomcat webapp中,其中有两个子模块的war文件需要部署。 Deploy插件支持Tomcat的版本最高为7,并且它可以正常工作。但是问题是我需要使用Tomcat 8,因为我的Web应用程序无法在Tomcat 7上运行。 是否可能从Jenkins将war文件部署到Tomcat 8?

1个回答

20

回答你的问题:

  1. Tomcat 7部署插件也可以用于Tomcat 8和9的部署,能够百分之百地正常工作。
  2. 必须在tomcat-users.xml文件(%TOMCAT8_PATH%/conf/tomcat-users.xml)中设置授权参数及角色。
  3. 下面的示例代码可用于在Tomcat 8容器中设置基于角色的授权:

                    <?xml version='1.0' encoding='utf-8'?>
                    <tomcat-users>
    
                        <role rolename="manager-gui"/>
                        <role rolename="manager-script"/>
                        <user username="admin" password="password" roles="manager-gui,manager-script" />
    
                    </tomcat-users>
    
  4. 关于Maven认证,请在路径%MAVEN_PATH%/conf/settings.xml中进行配置。

  5.    <?xml version="1.0" encoding="UTF-8"?>
                <settings ...>
                    <servers>
    
                        <server>
                            <id>TomcatServer</id>
                            <username>admin</username>
                            <password>password</password>
                        </server>
    
                    </servers>
                </settings>
    
  6. 使用 Tomcat 7 Maven 插件(也可用于 Tomcat 8 部署

  7.             <plugin>
                        <groupId>org.apache.tomcat.maven</groupId>
                        <artifactId>tomcat7-maven-plugin</artifactId>
                        <version>2.2</version>
                        <configuration>
                            <url>http://localhost:8080/manager/text</url>
                            <server>TomcatServer</server>
                            <path>/yourappcontextpath</path>
                        </configuration>
                    </plugin>
    
  8. 将应用部署到Tomcat可以根据需要执行这些目标。
    mvn tomcat7:deploy
    mvn tomcat7:undeploy
    mvn tomcat7:redeploy

  9. 此外,要获得更详细的日志记录,可以在logging.properties文件中启用java.util.logging.ConsoleHandler。该文件位于%Tomcat_path%/conf/logging.properties。

  10.                         org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
                            org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = java.util.logging.ConsoleHandler
    
                            org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
                            org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = java.util.logging.ConsoleHandler
    
                            org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
                            org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = java.util.logging.ConsoleHandler
    

1
部署容器插件在Tomcat 9上也完美运行。 - rogue lad
我一直收到:IO异常断开的管道(写入失败),有人能帮我解决这个问题吗? - Marci-man
踩反对票。不起作用。Tomcat会给出“Caused by: java.net.BindException: Address already in use”,而Jenkins会给出“Caused by: java.net.SocketException: Connection reset”。请更新。 - Philip Rego
[INFO] --- tomcat7-maven-plugin:2.2:undeploy (default-cli) @ gs-serving-web-content --- [INFO] 正在卸载位于 http://localhost:8081/gs-serving-web-content 的应用程序 SLF4J: 无法加载类 "org.slf4j.impl.StaticLoggerBinder"。 SLF4J: 默认使用无操作(NOP)记录器实现 SLF4J: 有关详细信息,请参阅 http://www.slf4j.org/codes.html#StaticLoggerBinder。 [INFO] 失败 - 没有名为 [/gs-serving-web-content] 的上下文存在 - Philip Rego
[INFO] --- tomcat7-maven-plugin:2.2:deploy (default-cli) @ gs-serving-web-content --- [INFO] 正在将war文件部署到http://localhost:8081/ 正在上传:http://localhost:8081/manager/text/deploy?path=%2F正在上传:http://localhost:8081/manager/text/deploy?path=%2F正在上传:http://localhost:8081/manager/text/deploy?path=%2F正在上传:http://localhost:8081/manager/text/deploy?path=%2F[INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE - Philip Rego
绑定异常“已在使用”意味着有一个类似的进程正在使用相同的端口。请将您的端口更改为9081或其他数字,它就可以工作了。 - Praveen Kumar K S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接