zoukankan      html  css  js  c++  java
  • springboot项目打包与部署

    1、springboot项目lib包、config配置文件打包配置。

            maven其实是由各种插件组成的,执行mvn 命令时,都是调用的对应的maven插件来原型的,如mvn compile、mvn install等调用的是maven-compiler-plugin、maven-install-plugin插件。打包使用的插件是在pom文件中配置的,其中pom中plugins 下的 plugin 是真实使用的,而 pluginManagement 下的 plugins 下的 plugin 则仅仅是一种声明。pom引入插件后可以在本地仓库中看到对应的插件。

           打包的时候,我们希望把项目依赖的jar包打包到lib目录,把配置文件单独打包到config目录(不要打入项目所在jar包,方便后期部署运维时修改配置文件),项目单独一个jar包和lib目录、config目录在同一级目录下。pom配置文件如下:

    <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
    <plugins>
    <plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>3.0.0</version>
    </plugin>
    <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
    <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.2</version>
    </plugin>
    <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.7.0</version>
    </plugin>
    <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20.1</version>
    </plugin>
    <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.0.2</version>
    </plugin>
    <plugin>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    </plugin>
    <plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
    </plugin>

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
    <archive>
    <manifest>
    <mainClass>com.XXX.SpringbootApplicXXXation</mainClass>
    </manifest>
    </archive>
    <descriptorRefs>
    <descriptorRef>
    jar-with-dependencies
    </descriptorRef>
    </descriptorRefs>
    </configuration>
    </plugin>

    </plugins>
    </pluginManagement>


    <plugins>

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
    <archive>
    <manifest>
    <addClasspath>true</addClasspath>
    <classpathPrefix>lib/</classpathPrefix>
    <mainClass>com.XXX.SpringbootApplication</mainClassXXX>
    </manifest>

    <manifestEntries>
    <!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
    <Class-Path>./config/</Class-Path>
    </manifestEntries>

    </archive>

    <excludes>
    <exclude>config/**</exclude>
    </excludes>
    </configuration>
    </plugin>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
    <execution>
    <id>copy-dependencies</id>
    <phase>package</phase>
    <goals>
    <goal>copy-dependencies</goal>
    </goals>
    <configuration>
    <outputDirectory>${project.build.directory}/lib</outputDirectory>
    </configuration>
    </execution>
    </executions>
    </plugin>

    <!-- 该插件的作用是用于复制指定的文件 -->
    <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
    <execution> <!-- 复制配置文件 -->
    <id>copy-resources</id>
    <phase>package</phase>
    <goals>
    <goal>copy-resources</goal>
    </goals>
    <configuration>
    <resources>
    <resource>
    <directory>src/main/resources/config</directory>
    <includes>
    <!-- <include>*.properties</include> -->
    </includes>
    </resource>
    </resources>
    <outputDirectory>${project.build.directory}/config</outputDirectory>
    </configuration>
    </execution>
    </executions>
    </plugin>


    </plugins>

    </build>

            需要特殊说明的是,addClasspath代表添加类路径,classpathPrefix代表把 lib/目录下的内容都添加到了类路径下,mainClass 指定启动主类,Class-Path 代表把config目录设为资源目录,这些信息都记录在项目jar包的Manifest.mf 文件里,执行jar包的时候,会根据这个文件找启动类、依赖jar所在类路径、和配置文件。这里的类路径lib/是相对路径,因此部署的时候要注意,lib目录要放在项目jar包所在目录下,因为运行jar包时,会根据Manifest.mf 文件在jar所在目录去找 lib/目录 ,如果放置错位置了,会报类找不到的错误。

    2、linux下项目部署

    (1)添加用户 

    groupadd -g 202 usergroup

    useradd -u 2021 -d /home/user -g usergroup-s /bin/csh -m user

    passwd user

    (2)安装jdk,并配置环境变量

       这里主要说下环境变量配置,如果设置环境上通用jdk环境变量,就在/etc/profile 里配置。如果只配置该用户下的java环境变量,就在用户家目录下的 .bashrc

    或.cshrc 下设置,csh和bash的配置是不同的。因为我的用户使用的是csh,因此我在.cshrc下配置:

    # .cshrc

    setenv JAVA_HOME /usr/java/jdk1.8.0_121
    setenv CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    setenv PATH $JAVA_HOME/bin:/bin:/usr/sbin:/usr/bin:/root/bin

           这里注意下,如果不在path下添加/bin:/usr/sbin:/usr/bin:/root/bin,会导致pwd 、ll、vim等命令都会不可用,执行命令时会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。如果不添加$JAVA_HOME/bin,就找不到该版本的jdk,java命令就不能执行,执行java命令时会到该目录下找 javac  java  jar等工具。

    如果用户使用的bashrc,那么环境变量配置就要用export:

    # .bashrc

    EXPORT JAVA_HOME=/usr/java/jdk1.8.0_121
    EXPORT CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    EXPORT PATH=$JAVA_HOME/bin:/bin:/usr/sbin:/usr/bin:/root/bin

    配置好后,source .cshrc 或source .bashrc 刷新环境变量,java -version 查看jdk版本号。

    (3)  项目部署与启动

       把项目jar包 test.jar、 lib/ 、config/目录上传到用户家目录下,并创建 logs目录,然后使用 java -jar   test.jar  启动项目即可。

          

  • 相关阅读:
    MVC模式-----struts2框架(2)
    MVC模式-----struts2框架
    html的<h>标签
    jsp脚本元素
    LeetCode "Paint House"
    LeetCode "Longest Substring with At Most Two Distinct Characters"
    LeetCode "Graph Valid Tree"
    LeetCode "Shortest Word Distance"
    LeetCode "Verify Preorder Sequence in Binary Search Tree"
    LeetCode "Binary Tree Upside Down"
  • 原文地址:https://www.cnblogs.com/luckyna/p/11563195.html
Copyright © 2011-2022 走看看