使用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

解释一下创建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)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>

那么我们可以在本项目中的pom.xml重新指定版本:

    <properties>  
        <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>  
    </properties>  

(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>  

上面我们通过修改属性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>  

(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>

这个插件太重要了,它提供了很多的功能:

  • 把项目打包成一个可执行的超级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);
    }
}

  • @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!";
	}
}

@RestController=@Controller+@ResponseBody的结合,使用这个注解的类里面的方法都以json格式输出。

启动springboot项目

三种项目启动方式

  • App的main方法
  • 使用命令:mvn spring-boot:run 启动
  • 使用命令:mvn package 进行打包,将生成的JAR文件,使用 java -jar 命令来运行
~/Desktop/MyProject/springboot$ mvn spring-boot:run

在这里插入图片描述
2020-03-22 02:23:31.204 INFO 10993 --- [ main] com.wong.App : Started App in 1.384 seconds (JVM running for 1.731)出现这句说话说明启动成功!

测试

在这里插入图片描述
谢谢阅读!

发布了381 篇原创文章 · 获赞 85 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/weixin_40763897/article/details/105020990
今日推荐