HoneyMoose
  • 首页
  • Java
  • Jersey
  • Jira
  • Confluence
  • U.S.
    • Real Estate
    • U.S. Travel
    • H1B
  • 项目和网站
    • CWIKI.US
    • OSSEZ 社区
    • WIKI.OSSEZ.COM
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
BLOG.OSSEZ.COM
A responsive blog theme focused om user reading experience
Computer Science

Spring Boot 创建一个可以执行的 Jar

我们希望将我们上面的程序打包成一个可以执行的 Jar,然后我们可以通过这个 Jar 部署到生产服务器上来运行。 可以执行的 Jar(Executable jars)有时候也会被称为 “fat jars”,这个 jar 中有你所有编译的类和所有运行这些类所需要依赖的 jar。换句话说就是将所有的依赖和你的代码打包成一个可以执行的文件,你可以通过命令行直接运行这个 jar,而不需要将这个 jar 部署到服务器或者容器中。 可执行的 jars 和 Java Java 并没有给提供一个标准的方案来载入所有需要的 jar 文件(有时候 jar 自己还会包含有其他的 jar)。 当你尝试分发可以自动运行的 jar 的时候,你可能会遇到一些问题,而导致自动运行的 jar 没有办法正常运行和启动。 为了解决这个问题,很多应用开发者使用 “uber” jars。 一个 uber jar 包中包括了所有应用程序运行所需要的类和依赖的类,然后将这些编译后的类打包到一个单独的归档文件中。 使用这种方式来部署你的引用的话,当你尝试通过部署的应用来查看需要的类还引入了那些包 或者 jar 的时候就变得非常困难。 同时,这种方式还有一些潜在的其他问题,比如说在不同的包中有相同名字的类。这种情况将会导致编译无法通过或者有丢失类的问题。 Spring Boot 采用了 其他的方法 同时能够让你能够访问 Jars 的目录。 为了在 Spring Boot 中创建一个可以执行的 jar,我们需要将插件 spring-boot-maven-plugin 添加到我们的 pom.xml 文件中。 将下面的代码插入到 dependencies 部分的后面: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>     spring-boot-starter-parent POM 包含有 <executions> 配置来绑定 repackage 的任务。 如果你没有使用 parent POM,你需要自行申明这个配置。 请参考 插件文档 来获得更多的详细信息。 保存更新过后的 pom.xml 文件,然后从命令行中运行 mvn package 命令,你将从命令行中看到下面的输出: $ mvn package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myproject 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] .... .. [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject --- [INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:2.5.0-SNAPSHOT:repackage (default) @ myproject --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ 如果是第一次构建的话,会下载需要的插件,可能会需要耗费一点点时间。     当构建完成后,访问 target 目录,你在这个目录中应该能够找到一个 myproject-0.0.1-SNAPSHOT.jar 的文件。 这个文件的大小应该差不多有 10 MB 左右。 如果你想看看这个文件里面有些什么东西的话,你可以通过运行 jar tvf 命令来进行查看: $ jar tvf target/myproject-0.0.1-SNAPSHOT.jar 通过运行上面的命令后,你应该可以在 target 目录中看到小文件被命名为 myproject-0.0.1-SNAPSHOT.jar.original 。 这些文件就是 Maven 命令创建的。Spring Boot 会将上面创建的这些文件进行重新打包。     你可以通过运行 java -jar 命令来运行你的应用程序,输入上面命令后,你的控制台应该会有下面的输出: $ java -jar target/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.5.0-SNAPSHOT) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in…

2021年01月17日 0Comments 16Browse 0Like Read more
Computer Science

Spring Boot 第一个示例启动运行

当你完成所有上面的配置后,你的应用程序应该是能够正常的启动了。 因为我们添加了 spring-boot-starter-parent 依赖到 POM,然后你就可以使用 run 来启动你的应用程序了。 run 这个是可以使用 Maven 来运行的,你可以不需要是 IDE,从项目的结构中输入 mvn spring-boot:run 然后来启动应用程序。 在第一次启动的时候,Maven 可能还需要下载必须的依赖,因此可能会消耗一些时间,在第二次启动的时候就没有这个问题了。 在控制台界面中,你应该能够看到下面的输出: $ mvn spring-boot:run . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.5.0-SNAPSHOT) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.222 seconds (JVM running for 6.514) 当 Spring Boot 完成启动后,打开你的浏览器,在浏览器的 URL 地址栏中输入 localhost:8080 后回车,你的浏览器应该能够显示下面的内容: Hello World! 如果你想退出正在运行的应用程序,在 cmd 命令行中输入: ctrl-c,就可以退出了。 如果你的项目已经导入到 IDE 中了,在 IntelliJ IDEA 中,你可以直接启动命令行工具,然后在命令行工具中输入需要的命令。当然你也可以使用 IntelliJ IDEA 的运行命令直接运行。 下图显示了如何从 IntelliJ IDEA 中直接进行启动。     如果你不希望使用 IntelliJ IDEA 的命令行工具进行启动的话,你可以找到源代码的 main 函数。 然后直接进行启动。     通过左侧的运行,你可以直接启动。 https://www.ossez.com/t/spring-boot/1103

2021年01月17日 0Comments 16Browse 0Like Read more
Computer Science

Spring Boot 第一个示例 “main” 方法

示例程序的最后需要介绍方法就是main 方法. 针对一个应用程序,这个方法是标准的方法。在 Java 环境中,是需要使用 Main 方法来执行的。 在我们定义的这个 main 方法中有一行代码,这个代码就是被用来运行 Spring Boot 的 SpringApplication 类中的 run。通过这个 run,我们就可以运行 Spring Boot 应用了。 SpringApplication 将会引导我们的应用完成一系列的功能,包括有启动 Spring,开始自动配置 Tomcat Web 应用服务器。     在启动的过程中,我们需要将 Example.class 参数传递到 run 方法中,这样可以告诉 SpringApplication 哪一个是 Spring 的主组件,换句话说就是告诉 Spring Boot 从哪个类开始启动。 args 数组同时也被用来传递在命令行中需要告诉应用程序的所有参数。     main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 public static void 类型的,方法必须接收一个字符串数组的参数等等。 https://www.ossez.com/t/spring-boot-main/1102

2021年01月17日 0Comments 13Browse 0Like Read more
Computer Science

Spring Boot 第一个示例 @EnableAutoConfiguration 注解

在示例代码中的第二个注解是 @EnableAutoConfiguration。     这个注解告诉 Spring Boot 如何去 “猜测(guess)” 你是如何希望配置 Spring 的。这个所谓的猜测过程其实也不是真的猜,是根据你添加的依赖来确定的。 当添加 spring-boot-starter-web 依赖后,Spring 将会添加 Tomcat 和 Spring MVC 依赖。这个自动配置假定你将会部署一个 web 应用和设置 Spring 框架。     Starters 和 Auto-configuration 自动配置(Auto-configuration)被用来与 Spring 的 “Starters” 很好的协同工作。 但是如果你还有其他的一些选项的话,你 Spring 的自动配置也会尝试去进行配置。 你当然也可以选择 starters 之外的依赖。 Spring Boot 仍然将会尝试对你的应用进行自动配置。 https://www.ossez.com/t/spring-boot-enableautoconfiguration/1101

2021年01月17日 0Comments 11Browse 0Like Read more
Computer Science

Spring Boot 第一个示例的 @RestController 和 @RequestMapping 注解

在示例源代码类中的第一个注解(annotation)是 @RestController。 这个注解被称为 stereotype 注解。在使用 Spring 的时候,需要对注解有所了解。Spring 有多个类型的注解,例如在包 org.springframework.context.annotation 和 org.springframework.stereotype 的注解。 不仅仅是 @Component,他的派生注解 @Service、@Controller、@RestController 和 @Repository都在这个包中,实际上它就是在告诉使用者这些注解提供 stereotype 的特性(或者称为功能、作用)。 Stereotype 特性最早出现在J2EE6 中,可以理解为围绕着 “元数据” 功能而发展出来的一种设计模式。 这个注解提示人们在阅读代码的时候了解 Spring 实现的功能和扮演的特定的角色。 在这个类中,我们告诉 Spring 是一个 Web 的 @Controller,因此 Spring 会通过这个注解来考虑这个类用于处理访问的 Web 请求。     @RequestMapping 注解,为我们的应用提供了 “routing” 信息。在这里的 routing 可以理解为路径,在我们访问 Web 资源的时候都会要求提供一个路径的信息。 具体有关这个注解的解释为任何 HTTP 的请求,如果使用了 / 路径的话,所有的请求将会映像到 home 方法,或者可以理解为 home 方法 将会被执行。 @RestController 注解将会告诉 Spring 将返回的结果使用 String 字符串来进行渲染,然后将渲染的结果返回给调用者。 @Controller 和 @RestController 之间有什么区别? 非常简单来说 @RestController 是一个特殊版本的 controller。是由 @Controller 和 @ResponseBody 2 个注解合并而成的。 在没有 @RestController 注解之前,你可以使用 @Controller,同时你还需要使用 @ResponseBody 注解来确定返回的内容是什么。设计 @RestController 的目的主要也是为了针对目前越来越流行的微服务和 Rest API 的开发来设计的。     @RestController 和 @RequestMapping 注解都是 Spring MVC 中的注解(这 2 个注解是没有在 Spring Boot 中指定的)。 请参考 Spring 参考文档中的 MVC 部分 来获得更多的有关信息。 https://www.ossez.com/t/spring-boot-restcontroller-requestmapping/1100

2021年01月17日 0Comments 9Browse 0Like Read more
Computer Science

Spring Boot 2.4 第一个示例程序书写代码

为了完成我们的第一个 Spring Boot 示例程序,我们需要向已经创建的项目框架中创建一个 Java 文件。 在默认情况下,Maven 会编译 src/main/java 目录中的源代码(这个是与 Maven 使用的约定有关的,这个目录结构可以修改,但是不建议修改,因为绝大部分人都会遵守这个约定)。 根据 Maven 的源代码约定,你需要按照下面的目录路径和文件名创建一个 Example.java 文件,完整的路径如下: src/main/java/Example.java。 Example.java 文件的内容,你可以直接拷贝下面的源代码。 import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration public class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(Example.class, args); } } 尽管上面代码看起来没有什么内容,但是实际上 Spring Boot 的框架已经为你做了很多工作了,在后续的章节中我们将会对代码中的一些重要内容进行解释和说明。 当然,你也可以使用 IDEA 导入到你喜欢的 IDE 中,然后从 IDE 中直接运行进行查看。     这个项目是可以直接启动运行的。 https://www.ossez.com/t/spring-boot-2-4/1099

2021年01月17日 0Comments 8Browse 0Like Read more
Computer Science

Spring Boot 2.4 第一个示例程序添加 Classpath 依赖

Spring Boot 提供了一系列的 “Starters” 来让你将 Jar 添加到你的 classpath 路径中。 我们的项目提供了一系列的 smoke tests,需要使用 spring-boot-starter-parent 定义在 POM 文件的 parent 部分。如果你对 smoke tests 不太了解的话,请参考相关定义和搜索相关文档。 在这里 smoke tests 的定义就是能够让项目能够跑起来,并且实现一些基本的功能。 spring-boot-starter-parent 是一个特殊的 starter。在这个定义中,我们为 Maven 提供了一些有用的默认配置。 同时 spring-boot-starter-parent 还提供了一些 [dependency-management]。 因为上面的的配置,针对依赖,你可以针对 “blessed” 忽略掉 version 标签。 当你针对 Spring Boot 在应用中,想使用一些特定的功能或者构建一些特定的应用,你可以针对需要来选择其他的 “Starters”。 针对当前的示例,我们打算是构建一个 Web 应用程序,因此我们需要添加一个 spring-boot-starter-web 到依赖(dependency)中。 在进行上面的操作之前,我们可以通过运行下面的命令来查看我们当前项目中使用的依赖: $ mvn dependency:tree [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT     mvn dependency:tree 命令行将会针对你的项目使用的依赖打印出依赖的树结构。 现在,你可以看到 spring-boot-starter-parent,但是还没有添加其他的依赖。 如果想添加一些必要的依赖,编辑你的 pom.xml 然后添加 spring-boot-starter-web 依赖代码到 pom.xml 文件的 parent 部分后面。 具体的代码内容,请参考下面的示例: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> 当你再次运行 mvn dependency:tree 的时候,你可以看到在你当前的项目中已经添加上去一些其他的依赖了。包括有 Tomcat web server 和 Spring Boot 本身。     上图显示的是添加 Web 依赖后显示的树。我们会发现添加的 jar 已经明显多了很多。 使用 Maven 的好处是,你不再需要指定版本,可以通过 Maven 直接进行管理。 https://www.ossez.com/t/spring-boot-2-4-classpath/1098

2021年01月08日 0Comments 31Browse 0Like Read more
Computer Science

Spring Boot 2.4 示例创建 POM 文件

我们需要从创建一个 Maven pom.xml 文件开始整个过程。 与我们做饭一样,Maven pom.xml 文件就好像一个菜单,我们需要使用这个来构建你的项目。 打开你常用的文本编辑器,然后将下面的内容拷贝到 pom.xml 文件中。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>myproject</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0-SNAPSHOT</version> </parent> <description/> <developers> <developer/> </developers> <licenses> <license/> </licenses> <scm> <url/> </scm> <url/> <!-- Additional lines to be added here... --> <!-- (you don't need this if you are using a .RELEASE version) --> <repositories> <repository> <id>spring-snapshots</id> <url>https://repo.spring.io/snapshot</url> <snapshots><enabled>true</enabled></snapshots> </repository> <repository> <id>spring-milestones</id> <url>https://repo.spring.io/milestone</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <url>https://repo.spring.io/snapshot</url> </pluginRepository> <pluginRepository> <id>spring-milestones</id> <url>https://repo.spring.io/milestone</url> </pluginRepository> </pluginRepositories> </project> 下面的 pom.xml 为上面的内容的内容拷贝到 pom.xml 中的内容。 我们已经测试过了,直接拷贝上面的内容就可以了。 上面的 pom.xml 文件应该能够给你一个可以成功构建的项目。 你可以通过运行 mvn package 来进行测试(在当前,你可能会收到 “jar will be empty - no content was marked for inclusion!” 警告信息,直接忽略即可)。 现在,你就可以将这个 Maven 构建文件导入到任何你喜欢的 IDE 中了(绝大多数 Java IDE 现在都能够支持导入 Maven 项目)。 为了简化操作,在这个示例中,我们将不使用 IDE 而继续使用纯文本编辑器(text editor)。 在运行 Maven 的时候,你会明显的看到警告信息。这个警告信息是没有关系的。 https://www.ossez.com/t/spring-boot-2-4-pom/1089

2021年01月08日 0Comments 28Browse 0Like Read more
Computer Science

Spring Boot 2.4 部署你的第一个 Spring Boot 应用需要的环境

这部分的内容将会对如何开发一个小的 “Hello World!” web 应用程序进行指导,同时还会对使用的 Spring Boot 的关键特性进行一些提示。 我们将使用 Maven 来构建这个项目。我们选择使用 Maven 的原因是大部分的 IDE 都能很好的进行支持。 spring.io 的网站提供了很多使用 Spring Boot 的 “开始使用(Getting Started)” 相关的 指南。 如果你需要解决一些特定的问题,请参考官方网站提供的开始使用指南。 你可以简化创建这个小应用的过程。这是因为 start.spring.io 网站提供了快速构建项目的指南和链接。访问 start.spring.io 地址,然后从依赖搜索中选择 “Web” starter。 通过上面的链接, Spring 的官方网站将会为你快速创建一个新的项目结构,随后你可以通过这个新的项目结构了快速进行代码开发了。 有关快速开启项目的文档,请参考 Spring 初始化文档(Spring Initializr documentation) 页面中内容,来获得更多的详细信息。 在我们开始构建示例应用之前,请打开你的命令行终端并且运行下面的命令以确定你的计算机环境中已经安装了需要的环境。 我们需要 Java 和 Maven 环境。 $ java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) $ mvn -v Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00) Maven home: /usr/local/Cellar/maven/3.3.9/libexec Java version: 1.8.0_102, vendor: Oracle Corporation 请注意,这个示例应用程序需要创建自己的目录。后面的示例内容,我们假定你已经创建了合适的目录,并且你已经在当前的目录中了。     要创建合适目录的原因是 Maven 对目录结构是有特定的约束的。 https://www.ossez.com/t/spring-boot-2-4-spring-boot/1088

2021年01月08日 0Comments 39Browse 0Like Read more
Computer Science

Spring Boot 2.4 从早期版本进行升级

如果你打算从 Spring Boot 的 1.x 版本进行升级的话,请查看 “项目 WIKI 页面中合并指南” 的内容来了解有关升级的详细指南。 请查看 “发布日志(release notes)” 页面中的内容来了解针对每一个发行版本的 “新的和值得注意的特性” 的信息。 当升级到一个新的特性发布版本的时候,一些属性可能需要被重命名或者被删除。 Spring Boot 提供了一个能够分析你的应用程序的工具,你可以通过这个工具来打印出应用的环境和启动诊断工具,来确定 Spring Boot 的属性配置正确和为你提供调试信息。 如果你希望启用上面的这个特性的话,请将下面的依赖添加到你的项目中:   <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-properties-migrator</artifactId> <scope>runtime</scope> </dependency> 添加到环境中的属性,例如当使用 @PropertySource 的时候,将会在诊断工具中显示出来。 一旦你完成了合并,请确定将上面的依赖从你的项目中删除。     如果你希望对已经安装的 CLI 工具进行升级的话,请使用正确的升级工具或者命令(例如,可以使用 brew upgrade)。 如果你是通过手动方式安装 CLI 的话,请参考 [标准的安装] 页面中有关的内容。请注意,当你更新你的 PATH 环境变量来删除任何可能存在的老的参考和应用。 https://www.ossez.com/t/spring-boot-2-4/1081

2021年01月08日 0Comments 34Browse 0Like Read more
12345…140
Newest Hotspots Random
Newest Hotspots Random
Discourse 主题和回复的日期如何查看 Discourse 如何查看主题的查看数量 Confluence 删除的页面会完全删除吗 Confluence 7 删除页面和子页面 DITA 已死 Java 线程暂停的简单代码
AWS S3 使用 travis 编译的时候提示错误 Aws::S3::Errors::PermanentRedirectTravis 编译使用 JDK 的版本GPG 使用 Maven 签名后发送到中央仓库提示 Upload your public key and try the operationPackage 打包上传到中央仓库的时候提示 SCM URL missingMaven Package 如何使用 GPG 签名Node Sass does not 支持的版本错误
Spring Boot 2.4 示例创建 POM 文件 Confluence 6 空间 Java 定义一个日志的时候应该如何定义 微信小程序开发工具如何进入开发界面 Confluence 6 嵌套用户组的示例 Confluence 6 使用主题
Categories
  • Akka
  • Algorithm(算法)
  • AMQP
  • Angular
  • CI
  • Compile And CI
  • Computer Science
  • Confluence
  • DataBase
  • Gradle
  • H1B
  • Hibernate
  • IDE
  • Java
  • Jersey
  • Jira
  • MariaDB
  • PrestaShop
  • Real Estate
  • Spring
  • Spring Batch
  • U.S.
  • U.S. Travel
  • 我的小厨

COPYRIGHT © 2020 HoneyMoose. ALL RIGHTS RESERVED.

THEME CWIKIUS.CN MADE BY VTROIS