当前位置: 首页 > news >正文

杭州知名网站建设网站开发项目管理文档

杭州知名网站建设,网站开发项目管理文档,怎么做网站后缀识别符号才不会变,佛山网站建设联系电话瘦身Spring Boot应用(thinJar) 简介 我们使用Spring Boot提供的spring-boot-maven-plugin打包Spring Boot应用#xff0c;可以直接获得一个完整的可运行的jar包#xff0c;把它上传到服务器上再运行就极其方便。 但是这种方式也不是没有缺点。最大的缺点就是包太大了…瘦身Spring Boot应用(thinJar) 简介 我们使用Spring Boot提供的spring-boot-maven-plugin打包Spring Boot应用可以直接获得一个完整的可运行的jar包把它上传到服务器上再运行就极其方便。 但是这种方式也不是没有缺点。最大的缺点就是包太大了动不动几十MB在网速不给力的情况下上传服务器非常耗时。并且其中我们引用到的Tomcat、Spring和其他第三方组件只要版本号不变这些jar就相当于每次都重复打进去再重复上传了一遍。 真正经常改动的代码其实是我们自己编写的代码。如果只打包我们自己编写的代码通常jar包也就几百KB。但是运行的时候classpath中没有依赖的jar包肯定会报错。 所以问题来了如何只打包我们自己编写的代码同时又自动把依赖包下载到某处并自动引入到classpath中。解决方案就是使用spring-boot-thin-launcher。 项目地址: https://github.com/spring-projects-experimental/spring-boot-thin-launcher 使用spring-boot-thin-launcher 我们先演示如何使用spring-boot-thin-launcher再详细讨论它的工作原理。 修改build-plugins-plugin给原来的spring-boot-maven-plugin增加一个dependency如下 project ......buildfinalNameawesome-app/finalNamepluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIddependenciesdependencygroupIdorg.springframework.boot.experimental/groupIdartifactIdspring-boot-thin-layout/artifactIdversion1.0.31.RELEASE/version/dependency/dependencies/plugin/plugins/build /project不需要任何其他改动了我们直接按正常的流程打包执行mvn clean package观察target目录最终生成的可执行simple-0.0.1-SNAPSHOT.jar只有79KB左右。 直接运行java -jar simple-0.0.1-SNAPSHOT.jar显然79KB的jar肯定无法放下Tomcat和Spring这样的大块头。那么运行时这个simple-0.0.1-SNAPSHOT.jar又是怎么找到它自己依赖的jar包呢 实际上spring-boot-thin-launcher这个插件改变了spring-boot-maven-plugin的默认行为。它输出的jar包只包含我们自己代码编译后的class一个很小的ThinJarWrapper以及解析pom.xml后得到的所有依赖jar的列表。 运行的时候入口实际上是ThinJarWrapper它会先在指定目录搜索看看依赖的jar包是否都存在如果不存在先从Maven中央仓库下载到本地然后再执行我们自己编写的main()入口方法。这种方式有点类似很多在线安装程序用户下载后得到的是一个很小的exe安装程序执行安装程序时会首先在线下载所需的若干巨大的文件再进行真正的安装。 这个spring-boot-thin-launcher在启动时搜索的默认目录是用户主目录的.m2我们也可以指定下载目录例如将下载目录指定为当前目录 $ java -Dthin.root. -jar simple-0.0.1-SNAPSHOT.jar上述命令通过环境变量thin.root传入当前目录执行后发现当前目录下自动生成了一个repository目录这和Maven的默认下载目录~/.m2/repository的结构是完全一样的只是它仅包含simple-0.0.1-SNAPSHOT.jar所需的运行期依赖项。 注意只有首次运行时会自动下载依赖项再次运行时由于无需下载所以启动速度会大大加快。如果删除了repository目录再次运行时就会再次触发下载。 预热 把79KB大小的simple-0.0.1-SNAPSHOT.jar直接扔到服务器执行上传过程就非常快。但是第一次在服务器上运行simple-0.0.1-SNAPSHOT.jar时仍需要从Maven中央仓库下载大量的jar包所以spring-boot-thin-launcher还提供了一个dryrun选项专门用来下载依赖项而不执行实际代码 java -Dthin.tracetrue -Dthin.forcetrue -Dthin.dryruntrue -Dthin.root. -jar simple-0.0.1-SNAPSHOT.jar执行上述代码会在当前目录创建repository目录并下载所有依赖项但并不会运行我们编写的main()方法。此过程称之为“预热”warm up。 如果服务器由于安全限制不允许从外网下载文件那么可以在本地预热然后把simple-0.0.1-SNAPSHOT.jar和repository目录上传到服务器。只要依赖项没有变化后续改动只需要上传simple-0.0.1-SNAPSHOT.jar即可。 Gradle方式 配置 build.gradle 在 Gradle 中您需要添加 thin-launcher 插件和最好具有显式发布定义的 maven-publish 插件。 plugins {...id maven-publishid org.springframework.boot.experimental.thin-launcher version 1.0.31.RELEASE }...repositories {mavenLocal()mavenCentral()maven { url https://repo.spring.io/snapshot }maven { url https://repo.spring.io/milestone } }...publishing {publications {maven(MavenPublication) {from components.java}} }使用 Gradle 打 thin 包 Gradle 执行 thinJar 任务: ./gradlew thinJar使用 Gradle 打 thin 包 并下载所有依赖项 如果我们将 Gradle 与 Thin-Launcher 插件一起使用则我们有一个 ThinResolve 任务可用。该任务会将应用程序及其依赖项保存在 build/thin/root/ 目录中类似于上一节的 Maven 插件 gradlew thinResolve cd build/thin/deploy $ java -Dthin.root. -jar simple-0.0.1-SNAPSHOT.jar命令行选项 您可以在命令行或系统属性 ( -D... ) 上设置各种选项。 thin.* 属性在调用主类之前全部从命令行中删除因此主类不必知道它是如何启动的。 Option 选项Default 默认Description 描述thin.mainStart-Class in MANIFEST.MF MANIFEST.MF 中的启动类要启动的主类对于 Spring Boot 应用程序通常是带有 SpringBootApplication 的类thin.dryrunfalse仅解决并下载依赖项。不要运行任何主类。注意除“false”甚至为空之外的任何值都是 true。thin.offlinefalse切换到“离线”模式。所有依赖项必须在本地可用例如通过之前的试运行否则将会出现异常。thin.forcefalse强制进行依赖项解析即使依赖项已被计算并在 thin.properties 中标记为“已计算”。thin.classpathfalse只打印类路径。不要运行主类。支持两种格式“路径”和“属性”。为了向后兼容“true”或空相当于“path”。thin.root${user.home}/.m2本地 jar 缓存的位置布置为 Maven 存储库。如果不存在启动器会在此处创建一个名为“repository”的新目录。thin.libsempty在运行时附加的其他类路径条目的形式与您在 java -classpath ... 中使用的形式相同。如果定义了此属性则在计算类路径时将忽略未解析的依赖项可能会导致运行时类未找到异常。thin.archivethe same as the target archive要启动的存档。例如可用于启动使用不同版本的瘦启动器构建的 JAR 文件或由 Spring Boot 在不使用瘦启动器的情况下构建的胖 jar 文件。thin.parentempty用于依赖关系管理和公共类路径条目的父存档。如果您运行具有相同父级的两个应用程序它们将具有相同的类路径从左到右读取直到它们实际上不同。thin.locationfile:.,classpath:/包含精简属性文件的目录路径按照 thin.name 作为资源位置目录的逗号分隔列表。将搜索这些位置以及相对于 /META-INF 的相同路径。thin.name“thin”用于搜索依赖项规范和覆盖的属性文件的名称。thin.profile用于查找精简属性的以逗号分隔的配置文件列表。例如。如果 thin.profilefoo 启动器搜索名为 thin.properties 和 thin-foo.properties 的文件。thin.libraryorg.springframework.boot.experimental:spring-boot-thin-launcher:1.0.31.RELEASE启动器库的定位器。可以是 Maven 坐标带有可选的 maven:// 前缀也可以是文件带有可选的 file:// 前缀。thin.repohttps://repo.spring.io/snapshot (also contains GA releases)thin.library 的基本 URL如果它是 Maven 形式默认。thin.launcherorg.springframework.boot.thin.ThinJarLauncherthin.library 中的主类。如果未指定则从清单 Main-Class 属性中发现。thin.parent.firsttrue表示类加载器是“父级优先”的标志即系统类加载器将用作默认值。这是“标准”JDK 类加载器策略。将其设置为 false 类似于 Web 容器和应用程序服务器中通常使用的设置。thin.parent.boottrue标志表明父类加载器应该是引导类加载器而不是“系统”类加载器。引导加载程序通常包含 JDK 类但不包含目标存档也不包含在命令行上添加的任何代理 jar。thin.debugfalse (like in Spring Boot).br标记以在依赖关系解析期间打开一些稍微详细的日志记录。也可以使用 debug 打开就像在 Spring Boot 中一样。thin.tracefalse超级详细地记录依赖项解析和启动过程中的所有活动。也可以使用 trace 打开。
http://www.w-s-a.com/news/951790/

相关文章:

  • 山西山西省建设厅网站微信备份如何转换为wordpress
  • 同城网站开发实用网站模板
  • 郑州做网站哪家公司好国外购买空间的网站有哪些
  • 资讯cms网站有那些餐饮品牌策划设计公司
  • 网站策划选题网站布局优化
  • 网站建设3000字wordpress 微信 主题制作
  • 代做寄生虫网站网站菜单效果
  • 网站备案为什么这么慢目录更新 wordpress
  • 视频在线制作网站Wordpress 外链图片6
  • 网站域名后缀有什么用网站建设的投资预算怎么写
  • 化妆品网站建设网站惠州网站关键字优化
  • 保定网站制作企业下载天眼查企业查询官网
  • 中山企业网站建设公司制作一个景点的网站
  • 连云港集团网站建设株洲建设网站
  • 做运动鞋评价的网站南山做网站联系电话
  • 网站开发公众号开发海南做公司网站
  • 论企业网站建设的必要性微信小程序做一个多少钱
  • 网站制作价格是多少元上海市中小企业服务中心
  • 网站建设管理人员济宁网站建设top
  • 桂林网站建设桂林网站的元素有哪些
  • 广东网站开发推荐网页制作个人简历模板教程
  • e建网保定百度seo公司
  • 网站建设中html代码网络培训课堂app
  • 无锡做网站seo自己做的网站如何上传网上
  • 园林景观网站模板小白怎么做跨境电商
  • 找第三方做网站 需要注意企业网站带数据库
  • 北京南站到北京站flash网站制作单选框和复选框ui组件
  • 网站建设核电集团网站设计案例
  • 宝塔做的网站能不能访问上海的广告公司网站建设
  • 网站会员系统方案新能源网站建设哪家好