解析 SpringBoot 项目的 pom.xml

作者: HikariCP | 来源:发表于2017-11-06 02:44 被阅读187次

    1. Spring Boot父级依赖

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
    </parent>
    

    这块配置就是Spring Boot父级依赖,有了这个,当前的项目就是Spring Boot项目了,spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。使用父级依赖提供的默认version。关于Spring Boot提供了哪些jar包的依赖,可查看C:\Users\用户.m2\repository\org\springframework\boot\spring-boot-dependencies\1.5.1.RELEASE\spring-boot-dependencies-1.5.1.RELEASE.pom

    <properties>
            <!-- Dependency versions -->
            <activemq.version>5.14.3</activemq.version>
            <antlr2.version>2.7.7</antlr2.version>
            <appengine-sdk.version>1.9.48</appengine-sdk.version>
            <artemis.version>1.5.2</artemis.version>
            <aspectj.version>1.8.9</aspectj.version>
            <assertj.version>2.6.0</assertj.version>
            <atomikos.version>3.9.3</atomikos.version>
            <bitronix.version>2.1.4</bitronix.version>
            <caffeine.version>2.3.5</caffeine.version>
            <cassandra-driver.version>3.1.3</cassandra-driver.version>
            <classmate.version>1.3.3</classmate.version>
            <commons-beanutils.version>1.9.3</commons-beanutils.version>
            <commons-collections.version>3.2.2</commons-collections.version>
            <spring-data-releasetrain.version>Ingalls-RELEASE</spring-data-releasetrain.version>
            ......
    </properties>
    

    如果你不想使用某个依赖默认的版本,您还可以通过覆盖自己的项目中的属性来覆盖各个依赖项。如下:

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
                <version>1.5.3.RELEASE</version>
    </dependency>
    

    2. 起步依赖 spring-boot-starter-xx

    Spring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的。举个例子来说明一下这个起步依赖的好处,比如组装台式机和品牌机,自己组装的话需要自己去选择不同的零件,最后还要组装起来,期间有可能会遇到零件不匹配的问题。耗时又消力,而品牌机就好一点,买来就能直接用的,后续想换零件也是可以的。相比较之下,后者带来的效果更好点(这里就不讨论价格问题哈),起步依赖就像这里的品牌机,自动给你封装好了你想要实现的功能的依赖。就比如我们之前要实现web功能,引入了spring-boot-starter-web这个起步依赖。我们来看看spring-boot-starter-web到底依赖了哪些,如下图:

    看来依赖如此之多,如果让我自己弄估计要调半天,所以Spring Boot通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。很多起步依赖的命名都暗示了它们提供的某种或者某类功能。


    3. Spring Boot Maven插件

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    

    上面的配置就是Spring Boot Maven插件,Spring Boot Maven插件提供了许多方便的功能:

    • 把项目打包成一个可执行的超级JAR(uber-JAR),包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,其中的内容能让你用java -jar来运行应用程序。
    • 搜索public static void main()方法来标记为可运行类。

    相关文章

      网友评论

        本文标题:解析 SpringBoot 项目的 pom.xml

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