From aea544669f35116d407484098046b3990fece6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=9A=E5=B9=B3?= <16285105+yapindasd@user.noreply.gitee.com> Date: Wed, 1 Oct 2025 08:28:08 +0000 Subject: [PATCH] update README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 亚平 <16285105+yapindasd@user.noreply.gitee.com> --- README.md | 639 +-------------------------------------------------- sdas 12.webp | Bin 0 -> 31572 bytes 2 files changed, 1 insertion(+), 638 deletions(-) create mode 100644 sdas 12.webp diff --git a/README.md b/README.md index f724453..f02f2f4 100644 --- a/README.md +++ b/README.md @@ -1,638 +1 @@ -# spring-boot-assembly - -> 1. 在spring boot项目中使用maven profiles和maven assembly插件根据不同环境打包成tar.gz或者zip -> 2. 将spring boot项目中的配置文件提取到外部config目录中 -> 3. 将spring boot项目中的启动jar包移动到boot目录中 -> 4. 将spring boot项目中的第三方依赖jar包移动到外部lib目录中 -> 5. bin目录中是启动,停止,重启服务命令 -> 6. 打包后的目录结构类似于tomcat/maven目录结构 - -## 代码托管 - -> **[Github](https://github.com/geekidea/spring-boot-assembly)** | **[Gitee](https://gitee.com/geekideaio/spring-boot-assembly)** - - -### 主要插件 -1. maven-assembly-plugin -2. maven-jar-plugin -3. spring-boot-maven-plugin -4. maven-dependency-plugin -5. maven-resources-plugin - -### CHANGELOG -[CHANGELOG](https://github.com/geekidea/spring-boot-assembly/blob/master/CHANGELOG.md) - -#### 1.maven-assembly-plugin 配置assembly.xml文件路径 -```xml - - maven-assembly-plugin - 3.1.0 - - - src/main/assembly/assembly.xml - - - - - make-assembly - package - - single - - - - -``` - -#### 2.assembly.xml打包配置文件 -```xml - - - - - ${profileActive}-${project.version} - - - - tar.gz - - - - true - - - - - - ${basedir}/src/bin - bin - 0755 - - **.sh - **.bat - - - - - - ${basedir}/target/classes - config - 0644 - - application.yml - application-${profileActive}.yml - mapper/**/*.xml - static/** - templates/** - *.xml - *.properties - - - - - - ${basedir}/target/lib - lib - 0755 - - - - - ${basedir}/target - boot - 0755 - - ${project.build.finalName}.jar - - - - - - ${basedir} - - NOTICE - LICENSE - *.md - - - - - -``` - -#### 3.spring-boot-maven-plugin 排除启动jar包中依赖的jar包 -```xml - - org.springframework.boot - spring-boot-maven-plugin - - ZIP - - - - non-exists - non-exists - - - - -``` - -#### 4.maven-jar-plugin 自定义maven jar打包内容 -```xml - - org.apache.maven.plugins - maven-jar-plugin - 3.1.0 - - - - - Application - - ../lib - true - - - - - io/geekidea/springboot/** - - - -``` - -#### 5.maven-dependency-plugin 复制项目的依赖包到指定目录 - -```xml - - org.apache.maven.plugins - maven-dependency-plugin - 3.1.0 - - - prepare-package - - copy-dependencies - - - target/lib - false - false - true - compile - - - - -``` - -#### 6.maven-resources-plugin - -```xml - - org.apache.maven.plugins - maven-resources-plugin - 3.1.0 - -``` - -```xml - - src/main/resources - true - - application.yml - application-${profileActive}.yml - mapper/**/*.xml - static/** - templates/** - *.xml - *.properties - - -``` - -#### 7.maven profiles配置 -```xml - - - - - local - - local - - - true - - - - dev - - dev - - - false - - - - test - - test - - - false - - - - uat - - uat - - - false - - - - prod - - prod - - - false - - - -``` - -#### 8.阿里云仓库配置 -```xml - - - - aliyun - http://maven.aliyun.com/nexus/content/groups/public/ - - -``` - - -___ -##### 项目源码结构 -```text -├─bin -│ restart.sh -│ shutdown.sh -│ startup.bat -│ startup.sh -│ -├─logs -│ springboot-assembly.log -│ -├─main -│ ├─assembly -│ │ assembly.xml -│ │ -│ ├─java -│ │ └─io -│ │ └─geekidea -│ │ └─springboot -│ │ └─assembly -│ │ Application.java -│ │ HelloController.java -│ │ HelloService.java -│ │ HelloServiceImpl.java -│ │ -│ └─resources -│ │ application-dev.yml -│ │ application-local.yml -│ │ application-prod.yml -│ │ application-test.yml -│ │ application-uat.yml -│ │ application.yml -│ │ -│ ├─mapper -│ │ │ test.xml -│ │ │ -│ │ └─hello -│ │ hello.xml -│ │ -│ ├─static -│ │ index.html -│ │ -│ └─templates -│ test.txt -│ -└─test -``` - -##### 项目打包 - -```bash -mvn clean package -``` - -##### 使用maven assembly插件打包local环境后的压缩包,target目录下 -```bash -spring-boot-assembly-local-1.0.RELEASE.tar.gz -``` - -##### linux解压tar.gz - -```bash -tar -zxvf spring-boot-assembly-local-1.0.RELEASE.tar.gz -``` - -##### 解压后的目录结构 -```text -└─spring-boot-assembly - │ LICENSE - │ NOTICE - │ README.md - │ - ├─bin - │ restart.sh - │ shutdown.sh - │ startup.bat - │ startup.sh - │ - ├─boot - │ spring-boot-assembly.jar - │ - ├─config - │ │ application-local.yml - │ │ application.yml - │ │ - │ ├─mapper - │ │ │ test.xml - │ │ │ - │ │ └─hello - │ │ hello.xml - │ │ - │ ├─static - │ │ index.html - │ │ - │ └─templates - │ test.txt - │ - └─lib - classmate-1.4.0.jar - fastjson-1.2.54.jar - hibernate-validator-6.0.13.Final.jar - jackson-annotations-2.9.0.jar - jackson-core-2.9.7.jar - jackson-databind-2.9.7.jar - jackson-datatype-jdk8-2.9.7.jar - jackson-datatype-jsr310-2.9.7.jar - jackson-module-parameter-names-2.9.7.jar - javax.annotation-api-1.3.2.jar - jboss-logging-3.3.2.Final.jar - jul-to-slf4j-1.7.25.jar - log4j-api-2.11.1.jar - log4j-to-slf4j-2.11.1.jar - logback-classic-1.2.3.jar - logback-core-1.2.3.jar - slf4j-api-1.7.25.jar - snakeyaml-1.23.jar - spring-aop-5.1.2.RELEASE.jar - spring-beans-5.1.2.RELEASE.jar - spring-boot-2.1.0.RELEASE.jar - spring-boot-autoconfigure-2.1.0.RELEASE.jar - spring-boot-starter-2.1.0.RELEASE.jar - spring-boot-starter-json-2.1.0.RELEASE.jar - spring-boot-starter-logging-2.1.0.RELEASE.jar - spring-boot-starter-tomcat-2.1.0.RELEASE.jar - spring-boot-starter-web-2.1.0.RELEASE.jar - spring-context-5.1.2.RELEASE.jar - spring-core-5.1.2.RELEASE.jar - spring-expression-5.1.2.RELEASE.jar - spring-jcl-5.1.2.RELEASE.jar - spring-web-5.1.2.RELEASE.jar - spring-webmvc-5.1.2.RELEASE.jar - tomcat-embed-core-9.0.12.jar - tomcat-embed-el-9.0.12.jar - tomcat-embed-websocket-9.0.12.jar - validation-api-2.0.1.Final.jar -``` - - -___ - -##### window启动,会打开浏览器,访问项目测试路径 - -```bash -bin/startup.bat -``` -> - 访问地址: [http://localhost:8080/example/hello?name=123](http://localhost:8080/example/hello?name=123) -> - 响应结果: -```json -{"msg":"service hello:123","code":200} -``` - -##### linux启动,停止,重启 - -```bash -sh bin/startup.sh 启动项目 -sh bin/shutdown.sh 停止服务 -sh bin/restart.sh 重启服务 -``` - -##### startup.sh 脚本中的主要内容 -- 配置项目名称及项目启动jar名称,默认项目名称与启动jar名称一致 - -```bash -APPLICATION="spring-boot-assembly" -APPLICATION_JAR="${APPLICATION}.jar" -``` - -- JAVA_OPTION配置 -> - JVM Configuration -> - -Xmx256m:设置JVM最大可用内存为256m,根据项目实际情况而定,建议最小和最大设置成一样。 -> - -Xms256m:设置JVM初始内存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存 -> - -Xmn512m:设置年轻代大小为512m。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8 -> - -XX:MetaspaceSize=64m:存储class的内存大小,该值越大触发Metaspace GC的时机就越晚 -> - -XX:MaxMetaspaceSize=320m:限制Metaspace增长的上限,防止因为某些情况导致Metaspace无限的使用本地内存,影响到其他程序 -> - -XX:-OmitStackTraceInFastThrow:解决重复异常不打印堆栈信息问题 - -```bash -JAVA_OPT="-server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m" -JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow" -``` -#### 执行启动命令:后台启动项目,并将日志输出到项目根目录下的logs文件夹下 - -```bash -nohup java ${JAVA_OPT} -jar ${BASE_PATH}/boot/${APPLICATION_JAR} --spring.config.location=${CONFIG_DIR} > ${LOG_PATH} 2>&1 & -``` - -## 最终执行jar包的命令 - -```bash -nohup java -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:-OmitStackTraceInFastThrow -jar /opt/spring-boot-assembly/boot/spring-boot-assembly.jar --spring.config.location=/opt/spring-boot-assembly/config/ > /opt/spring-boot-assembly/logs/spring-boot-assembly.log 2>&1 & -``` -> - nohup:在后台运行jar包,然后将运行日志输出到指定位置 -> - -server:指定JVM参数 -> - -jar /opt/spring-boot-assembly/boot/spring-boot-assembly.jar:指定启动的jar包 -> - 启动命令中指定的启动jar包路径,配置文件路径,日志路径都是绝对路径 -> - 可在任何位置执行start.sh,shutdown.sh,restart.sh脚本 -> - --spring.config.location:指定配置文件目录或者文件名称,如果是目录,以/结束 -> - > /opt/spring-boot-assembly/logs/spring-boot-assembly.log:指定日志输出路径 -> - 2>&1 & :将正常的运行日志和错误日志合并输入到指定日志,并在后台运行 - -#### shutdown.sh停服脚本,实现方式:找到当前项目的PID,然后kill -9 - -```bash -PID=$(ps -ef | grep "${APPLICATION_JAR}" | grep -v grep | awk '{ print $2 }') -kill -9 ${PID} -``` - -#### 日志记录 -##### 项目启动日志存储路径,一个项目只有一个启动日志文件 - -```bash -logs/spring-boot-assembly_startup.log -``` - -```text -================================================ 2018-12-12 12:36:56 ================================================ -application name: spring-boot-assembly -application jar name: spring-boot-assembly.jar -application bin path: /opt/spring-boot-assembly/bin -application root path: /opt/spring-boot-assembly -application log path: /opt/spring-boot-assembly/logs/spring-boot-assembly.log -application JAVA_OPT : -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:-OmitStackTraceInFastThrow -application background startup command: nohup java -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:-OmitStackTraceInFastThrow -jar /opt/spring-boot-assembly/boot/spring-boot-assembly.jar --spring.config.location=/opt/spring-boot-assembly/config/ > /opt/spring-boot-assembly/logs/spring-boot-assembly.log 2>&1 & -application pid: 11596 -``` - -##### 项目运行日志存储路径,最近一次启动项目的运行日志 - -```bash -logs/spring-boot-assembly.log -``` - -```text -. ____ _ __ _ _ - /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ -( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ - \\/ ___)| |_)| | | | | || (_| | ) ) ) ) - ' |____| .__|_| |_|_| |_\__, | / / / / - =========|_|==============|___/=/_/_/_/ - :: Spring Boot :: (v2.1.0.RELEASE) - -2018-12-12 23:28:58.420 INFO 11596 --- [ main] o.s.boot.SpringApplication : Starting application on VM_0_17_centos with PID 11596 (started by root in /opt/spring-boot-assembly) -2018-12-12 23:28:58.442 INFO 11596 --- [ main] o.s.boot.SpringApplication : The following profiles are active: local -2018-12-12 23:29:01.355 INFO 11596 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) -2018-12-12 23:29:01.437 INFO 11596 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] -2018-12-12 23:29:01.437 INFO 11596 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/9.0.12 -2018-12-12 23:29:01.461 INFO 11596 --- [ main] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib] -2018-12-12 23:29:01.646 INFO 11596 --- [ main] o.a.c.c.C.[.[localhost].[/example] : Initializing Spring embedded WebApplicationContext -2018-12-12 23:29:01.647 INFO 11596 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3028 ms -2018-12-12 23:29:01.708 INFO 11596 --- [ main] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/] -2018-12-12 23:29:01.712 INFO 11596 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] -2018-12-12 23:29:01.712 INFO 11596 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2018-12-12 23:29:01.712 INFO 11596 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'formContentFilter' to: [/*] -2018-12-12 23:29:01.713 INFO 11596 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] -2018-12-12 23:29:02.250 INFO 11596 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' -2018-12-12 23:29:03.179 INFO 11596 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '/example' -2018-12-12 23:29:03.182 INFO 11596 --- [ main] o.s.boot.SpringApplication : Started application in 5.844 seconds (JVM running for 6.547) -spring.profiles.active = local -contextPath = /example -server.port = 8080 -hello = Hello Local -http://localhost:8080/example/hello?name=123 -``` - - -##### 项目历史运行日志存储路径,每启动一次项目,会将之前的运行日志移动到back目录 -```text -`-- logs - |-- back - | |-- spring-boot-assembly_back_2018-12-12-23-30-10.log - | `-- spring-boot-assembly_back_2018-12-12-23-36-56.log - |-- spring-boot-assembly.log - `-- spring-boot-assembly_startup.log -``` - -#### maven项目打包 -##### 1. 使用IDEA工具打包,选择对应的profiles,然后clean package -![mvn-clean-package-local](https://raw.githubusercontent.com/geekidea/spring-boot-assembly/master/img/mvn-clean-package-local.png) -![mvn-clean-package-dev](https://raw.githubusercontent.com/geekidea/spring-boot-assembly/master/img/mvn-clean-package-dev.png) - -##### 2. 使用maven命令打包 - -```bash -mvn clean package -Pdev -``` -##### 3. 使用mvn-package脚本打包 -> window - -```bash -mvn-package.bat dev -``` - -> linux/mac - -```bash -sh mvn-package.sh dev -``` - -#### FAQ -##### Q: 项目打成tar包后,不能正常读取resource目录下的某些配置文件 - -##### A:如果resource目录中还用到其它配置文件,需要在pom.xml和assembly.xml文件的resource中进行配置 -1. pom.xml中的resource默认配置 -> 把需要打包的文件添加到include中 - -```xml - - - src/main/resources - true - - application.yml - application-${profileActive}.yml - mapper/**/*.xml - static/** - templates/** - *.xml - *.properties - - xxx.keystore - - -``` - -2. assembly.xml中的resource默认配置 -> 把需要打包的文件添加到include中 - -```xml - - - ${basedir}/target/classes - config - 0644 - - application.yml - application-${profileActive}.yml - mapper/**/*.xml - static/** - templates/** - *.xml - *.properties - - xxx.keystore - - -``` - -##### 参考: -- https://docs.spring.io/spring-boot/docs/current/maven-plugin/ -- http://maven.apache.org/components/plugins/maven-assembly-plugin/usage.html -- http://maven.apache.org/plugins/maven-jar-plugin/ -- http://maven.apache.org/components/plugins/maven-dependency-plugin/ -- https://maven.apache.org/plugins/maven-resources-plugin/ -- http://maven.apache.org/guides/introduction/introduction-to-profiles.html \ No newline at end of file +![输入图片说明](www.baidu.com)![输入图片说明](sdas%2012.webp) \ No newline at end of file diff --git a/sdas 12.webp b/sdas 12.webp new file mode 100644 index 0000000000000000000000000000000000000000..d0df7c5a235258d6e89c8445aa44906e98228a34 GIT binary patch literal 31572 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 XL6ulNTIxyZ`_IfTKvI literal 0 HcmV?d00001 -- Gitee