springboot2入门(3-maven相关)

使用maven构建springboot2项目。

原文:https://docs.spring.io/spring-boot/docs/2.0.0.M5/reference/htmlsingle/#using-boot-build-systems

maven版本:假设使用eclipse4.7,自带maven3.3。

继承parent

可以继承 spring-boot-starter-parent 工程,已获得一些有用的默认设置,比如:

pom.xml写法:

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.M5</version>
    </parent>
    <!-- override individual dependencies(EX. spring-data-releasetrain) by overriding a property -->
    <properties>
        <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
    </properties>

不使用继承方式

如果不使用parent,或者必须指定其他的parent的时候,可以利用 dependencyManagement 使用spring boot(scope=import):

    <dependencyManagement>
        <dependencies>
            <!-- Override jackson-databind provided by Spring Boot (2.9.1) -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.9.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.0.M5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

与继承parent的方式相比,这种方式不支持 Dependency Management ,指定依赖包版本的写法也不一样,但其他方面一样。就是说,需要我们自己指定spring依赖包的版本。
(注:实践发现,这种方式也支持 Dependency Management)

Spring Boot Maven Plugin

这个plugin可以把工程 package 为一个单一可执行的jar包,也可以直接 spring-boot:run 启动工程。

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

如果使用milestone或者snapshot版本,还需要添加:

    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

注意:默认我们已经继承了parent。如果没有继承自spring-boot-starter-parent,还需要明确 version
(注:实践发现,利用dependencyManagement 的import方式也支持 Dependency Management)


打包成war :生成可以发布到 独立容器(服务器)中的war文件,需要指定 packaging=war,并且嵌入的容器需要指定scope=provided。

<?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">
    <!-- ... -->
    <packaging>war</packaging>
    <!-- ... -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- ... -->
    </dependencies>
</project>

注意:这个容器需要支持 Servlet 3.0 规范。如果不支持,需要自己追加web.xml文件,并且通过 DispatcherServlet 载入 ApplicationContext 。这里我们添加新版本的maven。

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.0</version>
      </plugin>

另外,Application 是否需要extends SpringBootServletInitializer,有待于验证。经过验证,不需要处理 扩展 SpringBootServletInitializer

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    // 不需要扩展 SpringBootServletInitializer, 此处代码不需要
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
...
}

maven spring-boot:run
maven package
均成功。

验证结果:生成war文件,放到tomcat8.0.15下面启动成功,http get成功。验证用的pom.xml:

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

  <groupId>org.springframework</groupId>
  <artifactId>gs-rest-service</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <packaging>war</packaging> <!-- 验证1:生成war文件。默认为jar -->

  <properties>
    <java.version>1.8</java.version>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <plugin>  <!-- 验证2:打包成war文件,换成version3.2。默认的version2.2会提示缺少web.xml,可以配置,也可以像这里这样换版本,因为version3之后的默认配置有变化 -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.0</version>
      </plugin>
    </plugins>
  </build>

  <dependencyManagement> <!-- 验证4:不使用继承parent方式添加依赖 -->
    <dependencies>
      <!-- Override Spring Data release train provided by Spring Boot -->
      <dependency> <!-- 验证3:个别修改依赖包的版本:默认版本2.9.1 -->
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <!-- Import dependency management from Spring Boot -->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.0.0.M5</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency> <!-- 验证5:打包成war,war中不包含容器环境,需要发布到容器环境。默认含有容器环境(tomcat/jetty),可以自启动 -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.jayway.jsonpath</groupId>
      <artifactId>json-path</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <repositories>
    <repository>
      <id>spring-milestones</id>
      <name>Spring Milestones</name>
      <url>https://repo.spring.io/libs-milestone</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>spring-milestones</id>
      <name>Spring Milestones</name>
      <url>https://repo.spring.io/libs-milestone</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>
</project>

关于plugin的更多内容,可以参考:https://docs.spring.io/spring-boot/docs/2.0.0.M5/maven-plugin//

以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于初学者来说,Spring Boot 是一个很好的选择,因为它可以帮助简化 Java 应用程序的开发和部署过程。下面是一些入门 Spring Boot 的步骤: 1. 安装 Java 开发工具包(JDK):首先,确保你的计算机上已安装 JDK,并设置了 JAVA_HOME 环境变量。 2. 下载和安装 Spring Tool Suite(STS)或者 IntelliJ IDEA:这些是常用的开发工具,可以方便地创建和管理 Spring Boot 项目。 3. 创建一个新的 Spring Boot 项目:使用 STS 或 IntelliJ IDEA,创建一个新的 Spring Boot 项目。你可以选择使用 Maven 或 Gradle 进行项目构建和依赖管理。 4. 编写代码:在项目中创建一个主要的应用程序类,并添加一些业务逻辑。你可以使用 Spring Boot 的注解来简化配置和自动装配,例如 @SpringBootApplication。 5. 运行应用程序:使用开发工具中的运行按钮或命令行运行你的应用程序。Spring Boot 会自动启动嵌入式服务器,并部署你的应用程序。 6. 探索 Spring Boot 特性:Spring Boot 提供了许多功能和特性,如自动配置、数据库访问、Web 开发、安全性等。你可以阅读官方文档并尝试运用这些功能来构建更复杂的应用程序。 7. 学习和解决问题:当你遇到问题时,可以通过阅读文档、查找在线资源或向社区提问来解决。Spring Boot 在开发者社区中有广泛的支持和资源。 希望这些步骤能够帮助你入门 Spring Boot!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值