使用maven命令行方式创建springBoot工程
创建项目
1.首先使用mvn命令创建一个基本的Java项目结构
// 创建MyProject目录,用于存放java项目
~/Desktop$ mkdir MyProject
// 使用mvn命令创建java项目结构
~/Desktop/MyProject$ mvn archetype:generate -DgroupId=com.wong -DartifactId=springboot -Dversion=1.0.0 -DinteractiveMode=false
// 创建好的java项目,因为我们指定了-DartifactId=springboot,所以我们的项目名就是springboot
~/Desktop/MyProject$ tree -L 1
.
└── springboot
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
解释一下创建java项目结构的命令:
- mvn:maven命令
- archetype:generate:这是一个Maven插件,原型 archetype 插件是一个Maven项目模板工具包,可以用它创建基本的java项目结构。
- -DgourpId: 组织名,公司网址的反写 + 项目名称
- -DartifactId: 项目名(模块名)
- -Dversion:项目版本号
- -DinteractiveMode:是否使用交互模式:false不使用,直接创建;true使用,需要根据提示输入相关信息。
温馨小提示:
可以使用-DarchetypeArtifactId
指定ArchetypeId快速创建Java应用,如:
(1)创建一个Java应用:
mvn archetype:generate -DgroupId=com.wong.company -DartifactId=shopingmall -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
(2)创建一个Web Project:
mvn archetype:generate -DgroupId=com.wong.company -DartifactId=shopingmall -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
2.在pom.xml文件中添加
<project...>
...
<!--spring-boot-starter-parent是spring boot 的父级依赖,它是一个特殊的starter>,用以提供相关的maven默认依赖-->
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version>
</parent>
<dependencies> <!--Spring Boot WEB依赖--> <!--项目导入web的启动依赖,SpringBoot就会集成SpringMVC,就可以进行Controller的开发--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ...
</dependencies>
</project>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
温馨提示
(1)spring-boot-starter-parent是spring boot 的父级依赖,它是一个特殊的starter,用以提供相关的maven默认依赖。关于spring boot 提供了哪些jar包的依赖,可以 ~/.m2/repository/org/springframework/boot/spring-boot-dependencies/2.2.5.RELEASE/spring-boot-dependencies-2.2.5.RELEASE.pom文件。顺便提一下,在linux下每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。
如果不想使用spring-boot-dependencies-2.2.5.RELEASE.pom中某个依赖默认的版本,可以在本项目的pom.xml中重新指定版本来覆盖默认的,例如下面。
Spring Data默认版本在spring-boot-dependencies-2.2.5.RELEASE.pom是:
<properties> ... <spring-data-releasetrain.version>Moore-SR5</spring-data-releasetrain.version> ...
<properties> <dependencies> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-releasetrain</artifactId> <version>${spring-data-releasetrain.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
那么我们可以在本项目中的pom.xml重新指定版本:
<properties> <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version> </properties>
- 1
- 2
- 3
(2)如果不想继承自spring-boot-starter-parent的POM,即<parent>那里指定不是spring-boot-starter-parent,而是其他的。但是,我们仍然可以通过使用scope = import依赖关系来保持与spring-boot-starter-parent的依赖关系管理,只需要在我们项目的pom.xml中添加:
<dependencyManagement> <dependencies> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.2.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
上面我们通过修改属性spring-data-releasetrain.version实现了覆盖默认的版本,但是有时通过修改属性这种方式会存在一个问题,那就是使用这个属性的依赖有很多,我们一改就会全改,但我们并不想其他依赖的版本,那么怎么办呢?其实很简单,就是不要修改属性,直接重新定义依赖。但是需要在spring-boot-dependencies项之前的项目的dependencyManagement中添加一个配置,如要升级到另一个Spring Data版本:
<dependencyManagement> <dependencies> <!-- Override Spring Data release train provided by Spring Boot --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-releasetrain</artifactId> <version>Fowler-SR2</version> <scope>import</scope> <type>pom</type> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.2.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
(3)起步依赖 spring-boot-starter-xx
Spring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的。起步依赖就是自动给你封装好了你想要实现的功能的依赖。比如我们之前要实现web功能,就需要引入spring-boot-starter-web这个起步依赖。
Spring Boot通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。很多起步依赖的命名都暗示了它们提供的某种或者某类功能。
SpringBoot Maven插件
这是在spring-boot-dependencies-2.2.5.RELEASE.pom,本项目pom.xml继承的pom中:
<build> <pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.2.5.RELEASE</version> </plugin> ... </plugins> </pluginManagement>
</build>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
这个插件太重要了,它提供了很多的功能:
- 把项目打包成一个可执行的超级JAR(uber-JAR),包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,其中的内容能让你用java -jar来运行应用程序。
- 「重要」搜索public static void main()方法来标记为可运行类。
更多SpringBoot Maven插件,请参考《SpringBoot Maven插件》
编制应用入口类
package com.wong;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Hello world!
*
*/
@SpringBootApplication
public class App
{ public static void main( String[] args ) { SpringApplication.run(App.class,args); }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- @SpringBootApplication:是Sprnig Boot项目的核心注解,主要目的是开启自动配置。 @SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan
- main方法:这是一个标准的Java应用的main的方法,主要作用是作为项目启动的入口。
编写Controller
必须要写在App启动类同一个包下才能够扫描到。
package com.wong;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class First{
@GetMapping("hello")
public String index(){
return "Hello World!";
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
@RestController=@Controller+@ResponseBody的结合,使用这个注解的类里面的方法都以json格式输出。
启动springboot项目
三种项目启动方式
- App的main方法
- 使用命令:mvn spring-boot:run 启动
- 使用命令:mvn package 进行打包,将生成的JAR文件,使用 java -jar 命令来运行
~/Desktop/MyProject/springboot$ mvn spring-boot:run
- 1
2020-03-22 02:23:31.204 INFO 10993 --- [ main] com.wong.App : Started App in 1.384 seconds (JVM running for 1.731)
出现这句说话说明启动成功!
测试
谢谢阅读!
文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_40763897/article/details/105020990
- 点赞
- 收藏
- 关注作者
评论(0)