[英]How to create Multimoduling Spring Boot Maven project?
我做了:
項目運行沒有錯誤, web模塊看到模型依賴。 但是實體代碼不起作用(不在數據庫中創建表)。 如果我將課程轉移到網絡模塊 - 它會起作用。 沒錯 - 它可以工作,但 JPA/MySQL 的依賴項仍在模型模塊中。
我在做什么錯?
我嘗試使用包的模塊名稱更改 groupId 和 artifactId 的名稱,將 application.propeties 移動到模型模塊 - 無濟於事。
我的項目:
-模型/src/main/java 和 resources/com/example/demo/model
pom.xml:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.demo.model</groupId>
<artifactId>model</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>module-model</name>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
- web /src/main/java 和 resources/com/example/demo/web
application.properties 與 MySQL 的數據庫連接。
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.demo.web</groupId>
<artifactId>web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>module-web</name>
<description>Web project</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.example.demo.model</groupId>
<artifactId>model</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
主要 pom.xml:
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.1.0</version>
<packaging>pom</packaging>
<description>Demo project for Spring Boot</description>
<name>demo</name>
<modules>
<module>web</module>
<module>model</module>
</modules>
Anrew 您還可以使用@ComponentScan 使用“scanBasePackages”來調整@SpringBootApplication(scanBasePackages = { "com.example.demo.model", "com.example.demo.web" }) 注釋。 請記住,您必須在“Web 項目”中添加此注釋
@SpringBootApplication(scanBasePackages = "com.example.demo.model","com.example.demo.web" })
public class WebApplication {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}
@ComponentScan 告訴 Spring 您在哪些包中注釋了應該由 Spring 管理的類。 默認情況下,它會掃描主包,因此如果 com 下的 spring 啟動應用程序。 示例只會掃描此包下的所有類。 因此,如果您將它們移動到不同的包下,Spring 應用程序將無法識別它們。
如果是這種情況,您可以添加多個要掃描的包 @ComponentScan({ "xyz", "xyzdao" })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.