• Java中的Maven项目使依赖和自己写的代码的分开的部署的部署方式


    优点

    随着项目的功能越来越多,如果把所有代码都打包到一个jar里,这样不利于传输。把源码和依赖包分开。这样如果依赖包没有变化的话,再此部署时,就不需要往服务器的lib目录下上传依赖包,只需要把源码的变更过的源码包部署即可。

    maven中配置

    在 存在启动类的工程里的pom.xml 配置以下内容。之前的<build>标签内的东西注释掉。

    <!-- 使用下面的build内容在打依赖包和源码内容时可以分开-->
        <build>
            <plugins>
                <!-- 自定义ClassPath路径 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <!-- 把构建根目录的lib文件夹配置成ClassPath路径 -->
                        <archive>
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <classpathPrefix>lib/</classpathPrefix>
                            </manifest>
                            <manifestEntries>
                                <Class-Path>./</Class-Path>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <!--配置Jar包构建信息-->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>2.1.1.RELEASE</version>
                    <configuration>
                        <fork>true</fork>
                        <addResources>true</addResources>
                        <includeSystemScope>true</includeSystemScope>
                        <!--手动设置构建需要加入的依赖,只有配置的依赖才会加入。-->
                        <includes>
                            <!--配置一个不存在的groupId,这样就不会引入任何依赖,jar包就只包含代码文件-->
                            <include>
                                <groupId>not-exists</groupId>
                            </include>
                            <!--如果是多模块项目,其他模块需要手动添加下面-->
                        </includes>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!--把依赖拷贝到Lib路径-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>copy-dependencies</id>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
            <!--生成的jar包名称为项目的artifactId-->
            <finalName>${project.artifactId}</finalName>
        </build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67

    执行maven 打包

    在这里插入图片描述
    在这里插入图片描述

    项目部署

    启动(重启)服务的脚本( restart-customer.sh)

    #!/bin/bash
    # *******************************
    # example
    #     cd bin/
    #     sh debug.sh
    # ********************************
    
    kill -9 $(netstat -lnp|grep 8083 | awk '{print $7}' | awk -F"/" '{print $1}')
    cd /home/user/app
    chmod +755 platform-customer.jar
    source /etc/profile
    #cd ..
    #ulimit -n 524280
    cd /home/user/app/logs
    JAVA_OPTS=""
    nohup java -jar -Djava.library.path=/home/user/app-Dloader.path=./lib /home/user/app/platform-customer.jar -Xms512M -Xmx512M -Xss256k $JAVA_OPTS -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext --server.port=8083 &
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    查看服务启动状态

    #jps
    在这里插入图片描述

  • 相关阅读:
    SpringCloud-Eureka快速入门,集群搭建
    Flask 接口
    ruby语言怎么写个通用爬虫程序?
    Pytorch实用教程:为什么定义模型时,没有输入形参,但是使用时可以直接传入输入数据?
    [附源码]Python计算机毕业设计Django人事管理系统
    Epoch、批量大小、迭代次数
    批量处理实验接触角数据-MATLAB分析
    【JavaWeb】GET和POST
    小样本规模船型优化策略的选择研究
    Centos 7安装ansible自动化运维工具
  • 原文地址:https://blog.csdn.net/adminstate/article/details/134447421