新建子模块

码匠君 ... 2021-10-28 大约 7 分钟

# 新建子模块

说明

以下内容是基于 Maven 多模块工程创建子模块的案例说明

# 在现有工程内,新建常规模块

# 手工新建子模块(非微服务模块)

  1. 在合适的位置,新建模块目录,例如:dante-test

  2. dante-test业务模块下,新建pom.xml文件,以及src\main\javasrc\main\resources目录

  3. 修改dante-test业务模块下的pom.xml文件,添加 Maven 基础配置

<?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">
    <modelVersion>4.0.0</modelVersion>

    // 根据子模块所在位置,指定其上级目录pom信息作为parent
    <parent>
        <artifactId>dante-cloud</artifactId>
        <groupId>cn.herodotus.dante</groupId>
        <version>X.X.X</version>
    </parent>

    <artifactId>dante-test</artifactId>
    <version>X.X.X</version> // 此处指定版本号,便于versions-maven-plugin统一修改
    <packaging>jar</packaging>

    <description>dante 微服务测试模块</description>

    <dependencies>
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
        </dependency>
        ...
    </dependencies>

</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  1. 找到dante-test目录的上级目录中的 pom.xml 文件,在其中添加<modules>标签,以保持模块的联动依赖或编译
<modules>
	<module>dante-test</module>
</modules>
1
2
3
  1. 在工程dependencies目录下的 pom.xml 中,找到dependencyManagement下的

<!-- Dante Cloud --> 部分,添加模块声明

<dependency>
	<groupId>${project.groupId}</groupId>
	<artifactId>dante-test</artifactId>
	<version>${project.version}</version>
</dependency>
1
2
3
4
5

这样在其它模块中,就可以便捷的引用该模块,而且可以实现通过dependencies中的参数,统一控制模块版本。

<dependency>
	<groupId>${project.groupId}</groupId>
	<artifactId>dante-test</artifactId>
</dependency>
1
2
3
4

# IDEA 新建子模块(非微服务模块)

  1. 在 Idea 中,点击菜单 File -> New -> Module...,在弹出的对话框中选择,选择Maven,然后点击Next

输入图片说明

2,在新的New Module窗口中,输入想要新建的模块名称,点击Finish按钮完成模块新建操作。

输入图片说明

注意

输入完名称之后,一定要重新选择Parent内容,这决定了新建模块所在的位置和层次结构。

以上操作完成之后,会创建与“手工创建”章节结果相同,不再需要额外配置。 :::

# 在现有工程内,新建微服务模块

# 手工新建子模块(非常规模块)

  1. 在合适的位置,新建模块目录,例如:dante-test-ability

  2. dante-test-ability业务模块下,新建pom.xml文件,以及src\main\javasrc\main\resources目录

  3. 修改dante-test-ability 业务模块下的pom.xml文件,添加 Maven 基础配置

<?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">
    <parent>
        <artifactId>dante-cloud</artifactId>
        <groupId>cn.herodotus.dante</groupId>
        <version>X.X.X</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dante-cloud-bpmn-ability</artifactId>
    <version>X.X.X</version>

    <description>dante-test-ability测试服务</description>

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

    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>service-spring-boot-starter</artifactId>
        </dependency>
		...
    </dependencies>

    <build>
        <plugins>
            <!-- spring boot 默认插件 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <!-- docker 打包插件 -->
            <plugin>
                <groupId>io.fabric8</groupId>
                <artifactId>docker-maven-plugin</artifactId>
            </plugin>

            <!-- 拷贝插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

注意

service-spring-boot-starter是所有业务微服务启动运行,接入平台必须依赖的核心包

  1. 找到dante-test-ability目录的上级目录中的 pom.xml 文件,在其中添加<modules>标签,以保持模块的联动依赖或编译
<modules>
	<module>dante-test-ability</module>
</modules>
1
2
3
  1. src\main\resources目录下添加bootstrap.yml文件
server:
  port: 7070
spring:
  application:
    name:  @artifactId@ #拿到POM文件中的值
  profiles:
    active: @profile.name@
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      config:
        namespace: @config.namespace@
        server-addr: @config.server-addr@
        file-extension: yaml
        shared-configs:
          - data-id: dante-cloud-environment.yaml
            group: @profile.name@
          - data-id: dante-cloud-platform.yaml
            group: common
          - data-id: dante-cloud-database-@database.type@.yaml
            group: common
          - data-id: dante-cloud-database.yaml
            group: common
          - data-id: dante-cloud-redis.yaml
            group: common
          - data-id: dante-cloud-cache.yaml
            group: common
          - data-id: dante-cloud-rest.yaml
            group: common
          - data-id: dante-cloud-kafka.yaml
            group: common
        extension-configs:
          - data-id: ${spring.application.name}.yaml
            group: herodotus
      discovery:
        namespace: @config.namespace@
        server-addr: @discovery.server-addr@
    sentinel:
      transport:
        port: 8719
        dashboard: @sentinel.server-addr@
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  1. cn.herodotus.dante.test.ability 包下面添加启动类
package cn.herodotus.dante.test.ability;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13

# IDEA 新建子模块(非常规模块)

  1. 在 Idea 中,点击菜单 File -> New -> Module...,在弹出的对话框中选择,选择Spring Initializr,添加相关信息,然后点击Next

输入图片说明

2,在新的New Module窗口中,选择想要添加的微服务相关依赖模块,点击Finish按钮完成模块新建操作。

输入图片说明

注意

这里与(1)手工新建子模块(非微服务模块)章节描述的操作类似,都是通过点击菜单 File -> New -> Module...进行子模块的创建。因为是选择Spring Initializr,虽然操作路径一致,但是完全是按照创建一个新的Spring Boot进行操作,包括创建包的位置,Group,Artifact等信息都需要手工填写,也不会自动添加<modules>等关联信息。模块生成之后,还需要手动修改pom.xml

使用该种方式的好处,是微服务工程所需要的代码结构,Application 服务启动类,Edit Configuraitons...服务运行的默认配置都会帮助自动建好

  1. 修改dante-test-ability业务模块下的pom.xml文件,添加 Maven 基础配置
<?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">
    <parent>
        <artifactId>dante-cloud</artifactId>
        <groupId>cn.herodotus.dante</groupId>
        <version>X.X.X</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dante-cloud-bpmn-ability</artifactId>
    <version>X.X.X</version>

    <description>dante-test-ability测试服务</description>

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

    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>service-spring-boot-starter</artifactId>
        </dependency>
		...
    </dependencies>

    <build>
        <plugins>
            <!-- spring boot 默认插件 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <!-- docker 打包插件 -->
            <plugin>
                <groupId>io.fabric8</groupId>
                <artifactId>docker-maven-plugin</artifactId>
            </plugin>

            <!-- 拷贝插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

注意

service-spring-boot-starter是所有业务微服务启动运行,接入平台必须依赖的核心包

  1. 找到dante-test-ability目录的上级目录中的pom.xml文件,在其中添加<modules>标签,以保持模块的联动依赖或编译
<modules>
	<module>dante-test-ability</module>
</modules>
1
2
3
  1. src\main\resources目录下,新建bootstrap.yml文件并删除自动生成的application.properties文件,或者将自动生成的application.properties文件重命名为bootstrap.yml
server:
  port: 7070
spring:
  application:
    name:  @artifactId@ #拿到POM文件中的值
  profiles:
    active: @profile.name@
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      config:
        namespace: @config.namespace@
        server-addr: @config.server-addr@
        file-extension: yaml
        shared-configs:
          - data-id: dante-cloud-environment.yaml
            group: @profile.name@
          - data-id: dante-cloud-platform.yaml
            group: common
          - data-id: dante-cloud-database-@database.type@.yaml
            group: common
          - data-id: dante-cloud-redis.yaml
            group: common
          - data-id: dante-cloud-cache.yaml
            group: common
          - data-id: dante-cloud-rest.yaml
            group: common
          - data-id: dante-cloud-kafka.yaml
            group: common
        extension-configs:
          - data-id: ${spring.application.name}.yaml
            group: herodotus
      discovery:
        namespace: @config.namespace@
        server-addr: @discovery.server-addr@
    sentinel:
      transport:
        port: 8719
        dashboard: @sentinel.server-addr@
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# 在现有工程外,新建微服务独立模块工程

提示

现有工程外(dante-cloud工程外部)建立微服务工程,需要依赖于dante-cloud代码,因此需要使用mvn install 命令正确编译过dante-cloud工程,确保 Maven 本地缓存(Maven Repository)或者独立部署的 Maven 仓库中存在已经编译好的dante-cloud工程代码。

  1. Idea中,点击菜单 File -> New -> Module...,在弹出的对话框中选择,选择Spring Initializr,添加相关信息,然后点击Next

输入图片说明

  1. 在新的New Module窗口中,选择想要添加的微服务相关依赖模块,点击Finish按钮完成模块新建操作。

输入图片说明

  1. 修改新建业务模块下的pom.xml文件中,添加 Maven 基础配置
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>cn.herodotus.dante</groupId>
        <artifactId>dependencies</artifactId>
        <version>X.X.X</version>
    </parent>

    <artifactId>dante-test-ability</artifactId>
    <version>X.X.X</version>
    <packaging>jar</packaging>

    <description>eurynome test 服务工程</description>

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

    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>service-spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

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

</project>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  1. src\main\resources目录下,新建bootstrap.yml文件并删除自动生成的application.properties文件,或者将自动生成的application.properties文件重命名为bootstrap.yml
server:
  port: 7070
spring:
  application:
    name:  @artifactId@ #拿到POM文件中的值
  profiles:
    active: @profile.name@
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      config:
        namespace: @config.namespace@
        server-addr: @config.server-addr@
        file-extension: yaml
        shared-configs:
          - data-id: dante-cloud-environment.yaml
            group: @profile.name@
          - data-id: dante-cloud-platform.yaml
            group: common
          - data-id: dante-cloud-database-@database.type@.yaml
            group: common
          - data-id: dante-cloud-database.yaml
            group: common
          - data-id: dante-cloud-redis.yaml
            group: common
          - data-id: dante-cloud-cache.yaml
            group: common
          - data-id: dante-cloud-rest.yaml
            group: common
          - data-id: dante-cloud-kafka.yaml
            group: common
        extension-configs:
          - data-id: ${spring.application.name}.yaml
            group: herodotus
      discovery:
        namespace: @config.namespace@
        server-addr: @discovery.server-addr@
    sentinel:
      transport:
        port: 8719
        dashboard: @sentinel.server-addr@
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
上次编辑于: 2022年8月15日 11:33
贡献者: 码匠君 , herodotus