簡體   English   中英

如何創建多模塊 Spring Boot Maven 項目?

[英]How to create Multimoduling Spring Boot Maven project?

我做了:

  • 創建了具有一些依賴項的項目。
  • 創建了第一個 Maven 模塊(網絡)。
  • 創建了第二個 Maven 模塊(模型)。
  • 將代碼移至 Web 模塊:主類 + 控制器。
  • 從 root 中刪除 src(因為它已經是空的)
  • 在模型模塊創建的實體中,將依賴項 JPA/MySQl 驅動程序添加到該模塊的 pom.xml。
  • 在 web 模塊中添加了模型模塊的依賴項。

項目運行沒有錯誤, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM