使用maven命令行方式创建springBoot工程

举报
yd_221104950 发表于 2020/12/02 22:57:39 2020/12/02
【摘要】 创建项目 1.首先使用mvn命令创建一个基本的Java项目结构 // 创建MyProject目录,用于存放java项目 ~/Desktop$ mkdir MyProject // 使用mvn命令创建java项目结构 ~/Desktop/MyProject$ mvn archetype:generate -DgroupId=com.wong -DartifactI...

创建项目

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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。