当前位置: 首页 > 知识库问答 >
问题:

如何创建多模式Spring Boot Maven项目?

丁阳羽
2023-03-14

我做到了:

  • 创建了具有某些依赖项的项目
  • 创建了第一个maven模块(web)
  • 创建了第二个maven模块(模型)
  • 已将代码移动到web模块:主类控制器
  • 已从根目录中删除src(因为它已为空)
  • 在模型模块创建的实体中,向pom添加了依赖项JPA/MySQl驱动程序。此模块的xml
  • 在web模块中添加了模型模块的依赖关系

项目运行时没有错误,web模块可以看到模型依赖关系。但实体的代码不起作用(不在数据库中创建表)。如果我将类移动到web模块,它就会工作。确切地说,它可以工作,但JPA/MySQL的依赖关系仍然在模型模块中。

我做错了什么?

我试图更改groupId和artifactId的名称,以及模块的包名,移动了应用程序。模型模块属性-没有帮助。

我的项目:

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

应用数据库连接到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>

共有2个答案

卞轶
2023-03-14

@ComponentScan告诉Spring哪些包中有注释类,这些类应该由Spring管理。默认情况下,它会扫描主包,以便在com下启动spring应用程序。示例仅扫描此包下的所有类。所以,如果您将它们移动到不同的包下,Spring应用程序将无法识别它们。

如果是这种情况,您可以添加多个要扫描的包@ComponentScan({"x. y. z","x.y.z.dao"})

宰父子安
2023-03-14

您还可以将@SpringBootApplication(scanBasePackages={“com.example.demo.model”,“com.example.demo.web”})注释调整为使用@ComponentScan的“scanBasePackages”。请记住,您必须在“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);
    }

}
 类似资料:
  • 我使用的是IntelliJ IDEA社区版2016.1.3。我正在尝试创建一个maven多模块项目。项目公司是父模块,项目员工和项目技能集是子模块。项目员工和技术人员将有包装作为战争,但项目公司有包装作为POM。 我无法在employee和Skillset下创建一个类。我如何创建一个多模块的项目而没有在父(公司)的src文件夹?

  • 我使用的是Maven3.0.3,我有一个多模块Maven项目,我想用它来创建原型。结构如下: 最初的结构是: 运行cmd后, 在文件夹中生成的文件夹结构与上面相同(即),而不像 不知道我能做些什么让它工作吗?

  • 我有多个java项目。这些项目正在使用Gradle创建jar、war和ear文件。在每个项目中,我都使用清单文件来维护元数据,如版本、日期-时间...为此,我在每个build.gradle文件中都包含了清单文件创建逻辑。 但在Gradle中有一个特性调用SharedManifest。我在主项目build.gradle脚本中定义了以下两个任务。但是在每个jar和war文件中都有gradle创建的默认

  • 我正在尝试创建一个DateTimeFormatter对象,其模式符合以下时间表达式:2016-07-22T00:00:00.000-05:00。我正在尝试使用带有上述输入字符串的DateTimeFormatter类创建DateTime对象。 我已经尝试了下面表达式的许多不同版本,但目前被困在时区片"-05:00",在那里我得到了我的jUnit测试用例的错误: 我使用的当前格式模式是: 我也尝试过:

  • 我在Intellij IDEA 13.1.5中有一个Groovy项目,我想用Gradle构建它。所以我已经安装了Gradle本身,并在IDEA中启用了Gradle插件。 但是我现在如何从IDEA内部构建项目(或者更好的方法:开始编写Gradle构建文件)呢?我在项目的模块中创建了一个文件,根据文件名旁边的图标,IDEA将其正确识别为Gradle文件。 此外,我不知道如何继续下去。IDEA文档说我应

  • 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建型模式隐藏了类的实例的