项目打包

    • 单模块 maven 项目打包
    • 多模块 maven 项目打包
    • fatjar 打包(全部打包到一个jar里)

    把 src/main/resources 目录下的文件拷贝到 classpath 目录去。

    同时,在 jboot 开发的应用中,建议把 html、css、js等资源文件存放在 src/main/webapp 目录下。

    以上配置完毕之后,我们需要再配置 maven-assembly-plugin 插件,配置内容如下。

    1. <plugin>
    2. <groupId>org.apache.maven.plugins</groupId>
    3. <artifactId>maven-assembly-plugin</artifactId>
    4. <version>3.1.0</version>
    5. <executions>
    6. <execution>
    7. <id>make-assembly</id>
    8. <phase>package</phase>
    9. <goals>
    10. <goal>single</goal>
    11. </goals>
    12. <configuration>
    13. <recompressZippedFiles>false</recompressZippedFiles>
    14. <appendAssemblyId>false</appendAssemblyId>
    15. <descriptors>
    16. <descriptor>package.xml</descriptor>
    17. </descriptors>
    18. <outputDirectory>${project.build.directory}/</outputDirectory>
    19. </configuration>
    20. </execution>
    21. </executions>
    22. </plugin>

    package.xml

    1. #!/bin/bash
    2. # ----------------------------------------------------------------------
    3. # name: jboot.sh
    4. # version: 1.0
    5. # author: yangfuhai
    6. # email: fuhai999@gmail.com
    7. # use : ./jboot.sh {start, stop, restart}
    8. # ----------------------------------------------------------------------
    9. # 启动入口类,该脚本文件用于别的项目时要改这里
    10. MAIN_CLASS=io.jboot.app.JbootApplication
    11. COMMAND="$1"
    12. if [[ "$COMMAND" != "start" ]] && [[ "$COMMAND" != "stop" ]] && [[ "$COMMAND" != "restart" ]]; then
    13. echo "./jboot.sh {start, stop, restart}"
    14. exit 0
    15. fi
    16. # Java 命令行参数,根据需要开启下面的配置,改成自己需要的,注意等号前后不能有空格
    17. # JAVA_OPTS="-Xms256m -Xmx1024m -Dundertow.port=80 -Dundertow.host=0.0.0.0"
    18. # JAVA_OPTS="-Dundertow.port=80 -Dundertow.host=0.0.0.0"
    19. # 生成 class path 值
    20. APP_BASE_PATH=$(cd `dirname $0`; pwd)
    21. CP=${APP_BASE_PATH}/config:${APP_BASE_PATH}/lib/*
    22. function start()
    23. {
    24. # 运行为后台进程,并在控制台输出信息
    25. java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} &
    26. # 运行为后台进程,并且不在控制台输出信息
    27. # nohup java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} >/dev/null 2>&1 &
    28. # 运行为后台进程,并且将信息输出到 output.log 文件
    29. # nohup java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} > output.log &
    30. # 运行为非后台进程,多用于开发阶段,快捷键 ctrl + c 可停止服务
    31. # java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS}
    32. }
    33. function stop()
    34. {
    35. kill `pgrep -f ${MAIN_CLASS}` 2>/dev/null
    36. # 以下代码与上述代码等价
    37. # kill $(pgrep -f ${MAIN_CLASS}) 2>/dev/null
    38. }
    39. if [[ "$COMMAND" == "start" ]]; then
    40. start
    41. elif [[ "$COMMAND" == "stop" ]]; then
    42. stop
    43. else
    44. stop
    45. start
    46. fi

    以上内容配置完毕之后,支持 maven 命令 mvn clean install ,待命令执行完毕之后,会在 target 目录下生成一个文件名为: 项目-版本 的文件夹。

    复制该文件夹到服务器,然后执行里面的 jboot.sh start 命令即可上线。

    多模块项目在以上配置的基础上,添加 maven-resources-plugin maven 插件,用于拷贝其他maven模块的资源文件和html等内容到此运行模块。

    maven 配置如下:

    fatjar 打包指的是,把所有资源(html、css、js)以及项目依赖全部打包到一个 jar 包里,这样我们可以通过 命令 java -jar xxx.jar 启动,更加方便部署,特别是方便在微服务下的多模块部署。

    fatjar 打包第一步,在 pom.xml 添加如下配置

    1. <build>
    2. <resources>
    3. <resource>
    4. <directory>src/main/resources</directory>
    5. <includes>
    6. <include>**/*.*</include>
    7. </includes>
    8. <filtering>false</filtering>
    9. </resource>
    10. <resource>
    11. <directory>src/main/webapp</directory>
    12. <includes>
    13. <include>**/*.*</include>
    14. </includes>
    15. <filtering>false</filtering>
    16. </resource>
    17. </resources>
    18. <plugins>
    19. <plugin>
    20. <groupId>org.apache.maven.plugins</groupId>
    21. <artifactId>maven-compiler-plugin</artifactId>
    22. <target>1.8</target>
    23. <encoding>UTF-8</encoding>
    24. <compilerArgument>-parameters</compilerArgument>
    25. </configuration>
    26. </plugin>
    27. <plugin>
    28. <artifactId>maven-resources-plugin</artifactId>
    29. <executions>
    30. <execution>
    31. <id>copy-resources</id>
    32. <phase>validate</phase>
    33. <goals>
    34. <goal>copy-resources</goal>
    35. </goals>
    36. <configuration>
    37. <outputDirectory>${basedir}/target/classes/webapp</outputDirectory>
    38. <resources>
    39. <resource>
    40. <directory>${basedir}/src/main/webapp</directory>
    41. </resource>
    42. </resources>
    43. </configuration>
    44. </execution>
    45. </executions>
    46. </plugin>
    47. <plugin>
    48. <groupId>org.apache.maven.plugins</groupId>
    49. <artifactId>maven-assembly-plugin</artifactId>
    50. <version>3.1.0</version>
    51. <executions>
    52. <execution>
    53. <id>make-assembly</id>
    54. <phase>package</phase>
    55. <goals>
    56. <goal>single</goal>
    57. </goals>
    58. <configuration>
    59. <archive>
    60. <manifest>
    61. <mainClass>io.jboot.app.JbootApplication</mainClass>
    62. <!-- 如果该服务只提供 RPC 服务,不提供 WEB 服务,使用下方的配置启动速度更快,占用资源更少-->
    63. <!-- <mainClass>io.jboot.app.JbootSimpleApplication</mainClass>-->
    64. </manifest>
    65. </archive>
    66. <descriptorRefs>
    67. <descriptorRef>jar-with-dependencies</descriptorRef>
    68. </descriptorRefs>
    69. </configuration>
    70. </execution>
    71. </executions>
    72. </plugin>
    73. </build>

    第二步:通过 Maven 打包

    执行命令 mvn clean package 进行打包,在 pom.xml 对应的模块下会生成一个 xxx-with-dependencies.jar 的 jar 包,复制该 jar 到服务器上,执行 即可启动项目。