Java

【亲测】在Eclipse使用Maven自动打包部署到服务器上

2019-07-25  本文已影响0人  fly_basket

前言

本来我想用jekins+docker来自动打包部署到服务器上,但是docker研究的不深,遇到问题就GG了,所以换一种简单的方式来打包部署。

思考

在自动打包部署之前,我们需要分析一下如何打包,并解决下面几个问题:

  1. 如何使用Maven进行打包?
  2. 如何使用Maven自动部署到远程服务器上?

实战

首先我们解决第一个问题,如何使用Maven进行打包?

<build>
        <finalName>ref-comet</finalName>
        <resources>
            <!-- 配置文件 -->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>

然后解决我们第二个问题,Maven怎么打包到远程服务器?

<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
<build>
        <finalName>ref-comet</finalName>
        <pluginManagement>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!-- 先测试本地 -->
                        <!-- <url>http://192.168.1.235:8888/manager/text</url> -->
                        <!-- 填写远程服务器地址 -->
                        <!-- <url>http://192.168.21.10:8081/manager/text</url> --> 
                        <!-- 远程tomcat管理用户名 -->
                        <username>tomcat</username>
                        <!-- 远程tomcat管理密码 -->
                        <password>tomcat</password>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

最后一步,直接通过eclipse来发布,右键项目->Run As->Maven build...->设置goals:clean install tomcat7:deploy


发布

坑点

  1. Tomcat8.5在浏览器上测试登录远程Tomcat Manager时,出现”403 Access Denied”
    Tomcat8.5加入了ip授权机制,默认仅支持本地访问,所以会抛出权限不足异常
    解决方式:
    找到tomcat/webapps/manager/META-INF/的context.xml文件,注释掉下面这一段或者添加\d+.\d+.\d+.\d+,来支持其他ip访问当前tomcat
# <Valve className="org.apache.catalina.valves.RemoteAddrValve"
# allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
  1. 上传出现异常”I/O exception (java.net.SocketException) caught when processing request: Connection reset by peer: socket write error”
  1. 正式服务器不太建议用这种方式,不太安全,一旦密码泄露,后果可想而知

参考博客

https://blog.csdn.net/qq_30264689/article/details/79471621

上一篇 下一篇

猜你喜欢

热点阅读