为什么我的 Spring Boot starter 没有将它的依赖项带到项目中?
Why doesn't my Spring Boot starter bring its dependencies to the project?
我创建了一个简单的启动器 - TimeStarter,里面有 RestController。这是它的 pom:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/>
</parent>
<groupId>ez</groupId>
<artifactId>time-starter-spring-boot-starter</artifactId>
<version>0.0.1</version>
<name>time-starter</name>
<properties>
<java.version>11</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-web</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
我已经将 TimeStarter 添加到我的项目中:
<dependencies>
<dependency>
<groupId>ez</groupId>
<artifactId>time-starter-spring-boot-starter</artifactId>
<version>0.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
之后,我希望所有必要的依赖项 (spring-boot-starter-web) 都会出现在我的项目中,并且 starter 中的 REST 控制器将为 HTTP 请求做好准备。但是不行,我必须添加 spring-boot-starter-web 和 spring-web 依赖项才能使我的启动器正常工作。
正如M.Deinum所说,原因是我在启动器中将依赖项设置为“可选”。
我创建了一个简单的启动器 - TimeStarter,里面有 RestController。这是它的 pom:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/>
</parent>
<groupId>ez</groupId>
<artifactId>time-starter-spring-boot-starter</artifactId>
<version>0.0.1</version>
<name>time-starter</name>
<properties>
<java.version>11</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-web</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
我已经将 TimeStarter 添加到我的项目中:
<dependencies>
<dependency>
<groupId>ez</groupId>
<artifactId>time-starter-spring-boot-starter</artifactId>
<version>0.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
之后,我希望所有必要的依赖项 (spring-boot-starter-web) 都会出现在我的项目中,并且 starter 中的 REST 控制器将为 HTTP 请求做好准备。但是不行,我必须添加 spring-boot-starter-web 和 spring-web 依赖项才能使我的启动器正常工作。
正如M.Deinum所说,原因是我在启动器中将依赖项设置为“可选”。