Post

Spring Multimódulo

Spring Multimódulo

Se crea un proyecto rest multimódulo rest con spring.

Configuracion maven

  • Creamos un proyecto maven multimodulo con spring
  • Configuración de módulos

Maven multimódulo

1
2
3
4
5
6
7
	<properties>
		<java.version>17</java.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<spring-boot.version>3.4.3</spring-boot.version>
		<maven.compiler.source>${java.version}</maven.compiler.source>
		<maven.compiler.target>${java.version}</maven.compiler.target>
	</properties>

Configuración de dependencias spring boot

1
2
3
4
5
6
7
8
9
10
11
12
	<!-- Gestión de dependencias centralizada -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>${spring-boot.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

Configuración del plugin de compilación maven

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
	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.11.0</version>
					<configuration>
						<source>${java.version}</source>
						<target>${java.version}</target>
						<encoding>${project.build.sourceEncoding}</encoding>
						<annotationProcessorPaths>
							<path>
								<groupId>org.projectlombok</groupId>
								<artifactId>lombok</artifactId>
							</path>
						</annotationProcessorPaths>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-maven-plugin</artifactId>
					<configuration>
						<mainClass>com.example.spring.modulith.Main</mainClass>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

Configuración dependencias comunes para todos los módulos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	<!-- Dependencias comunes para los módulos -->
	<dependencies>
		<!-- Lombok para reducir boilerplate -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<scope>provided</scope>
		</dependency>

		<!-- Dependencias para tests: incluye JUnit Jupiter -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

Definición de los módulos

1
2
3
4
5
6
7
	<!-- Definición de módulos hijos -->
	<modules>
		<module>common-lib</module>
		<module>order-module</module>
		<module>payment-module</module>
		<module>main-module</module>
	</modules>

Configuración de módulos

Módulo Main añadimos la dependencia de spring

1
2
3
4
5
6
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>

Configuramos un módulo Main para arrancar (Revisar la configuración spring-boot-maven-plugin )

1
2
3
4
5
6
7
8
9
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

Referencias

This post is licensed under CC BY 4.0 by the author.