美文网首页
Springboot源码分析之项目结构

Springboot源码分析之项目结构

作者: dqqzj | 来源:发表于2019-08-19 23:17 被阅读0次

    摘要:

    • 无论是从IDEA还是其他的SDS开发工具亦或是https://start.spring.io/ 进行解压,我们都会得到同样的一个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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
              <modelVersion>4.0.0</modelVersion>
              <parent>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-parent</artifactId>
                  <version>2.1.6.RELEASE</version>
                  <relativePath/> <!-- lookup parent from repository -->
              </parent>
              <groupId>com.github.dqqzj</groupId>
              <artifactId>springboot</artifactId>
              <version>0.0.1-SNAPSHOT</version>
              <name>springboot</name>
              <packaging>jar</packaging>
              <description>Demo project for Spring Boot</description>
              <properties>
                  <java.version>1.8</java.version>
              </properties>
              <dependencies>
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter</artifactId>
                  </dependency>
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-test</artifactId>
                      <scope>test</scope>
                  </dependency>
              </dependencies>
              <build>
                  <plugins>
                      <plugin>
                          <groupId>org.springframework.boot</groupId>
                          <artifactId>spring-boot-maven-plugin</artifactId>
                      </plugin>
                  </plugins>
              </build>
          </project>
    

    parent标签的含义

    • 找到本地仓库的spring-boot-starter-parent坐标
        <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.6.RELEASE</version>
            <relativePath>../../spring-boot-dependencies</relativePath>
          </parent>
         <!-- 省略无关代码...... -->
          <build>
          <!-- 省略无关代码...... -->
            <pluginManagement>
              <plugins>
               <!-- 省略无关代码...... -->
                <plugin>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-maven-plugin</artifactId>
                  <executions>
                    <execution>
                      <id>repackage</id>
                      <goals>
                        <goal>repackage</goal>
                      </goals>
                    </execution>
                  </executions>
                  <configuration>
                    <mainClass>${start-class}</mainClass>
                  </configuration>
                </plugin>
                <!-- 省略无关代码...... -->
              </plugins>
            </pluginManagement>
          </build>
        </project>
    
    关注点
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.6.RELEASE</version>
            <relativePath>../../spring-boot-dependencies</relativePath>
          </parent>
    

    说明我们的工程可以进行改造进行替换掉原来工程的parent标签.

        <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                      <execution>
                        <id>repackage</id>
                        <goals>
                          <goal>repackage</goal>
                        </goals>
                      </execution>
                    </executions>
                    <configuration>
                      <mainClass>${start-class}</mainClass>
                    </configuration>
                  </plugin>
    

    repackage必须要有否则打jar包时候无法正常启动.

    file

    在配置文件加上repackage即可

        <build>
                <plugins>
                    <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>repackage</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
    

    IDEA自带maven工具

    file

    mvnw是基于linuxshell脚本命令

    mvnw.cmd是基于windows的脚本命令

    .mvn包含了 maven下载路径以及版本等信息

    也就是说我们完全不用自己下载maven而是可以直接使用IDEA给我们提供的工具即可,只不过通常不会这么做。

    repackage的作用

    正常情况下打包会生成springboot-0.0.1-SNAPSHOT.jar.original,springboot-0.0.1-SNAPSHOT.jar这样的2个文件,而repackage的作用就是将springboot-0.0.1-SNAPSHOT.jar.original重新打包为我们可以执行的springboot-0.0.1-SNAPSHOT.jar

    相关文章

      网友评论

          本文标题:Springboot源码分析之项目结构

          本文链接:https://www.haomeiwen.com/subject/jnpysctx.html