PSD( Private-Self-Development )

Maven 다중 프로젝트 설정 본문

Backend/기타

Maven 다중 프로젝트 설정

chjysm 2024. 12. 17. 17:38

사용한 이유

msa 와 DDD, 헥사고날 아키택처를 적용하다 보니
하나의 프로젝트에 여러 레이어가 존재하고 이게 불필요하게 붙어있다고 생각하여
큰 프로젝트 내부에 여러 프로젝트로 나누어
이들간의 의존성 주입으로 서로를 참조하도록 수정

 

 

최상단 프로젝트의 xml

<!-- 내부 프로젝트 이름	-->
<modules>
	<module>shared</module>
	<module>domain</module>
	<module>application</module>
	<module>infrastructure</module>
	<module>presentation</module>
	<module>container</module>
</modules>

<!-- 사용할 디펜던시 버전 명시	-->
<properties>
	<java.version>21</java.version>
	<spring.boot.version>3.3.5</spring.boot.version>
	..
</properties>

<!-- 내부 프로젝트의 버전 설정	-->
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>com.test</groupId>
			<artifactId>shared</artifactId>
			<version>${project.version}</version>
		</dependency>
		...
	</dependencies>
</dependencyManagement>

<!-- 프로필 설정	-->
<profiles>
	<profile>
		<id>local</id>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
		<properties>
			<jib.to.image>test/test-api:${project.version}</jib.to.image>
			<jib.to.auth.username></jib.to.auth.username>
			<jib.to.auth.password></jib.to.auth.password>
		</properties>
	</profile>

	<profile>
		<id>AWS</id>
		<properties>
			<jib.to.image>${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_REPOSITORY}:${IMAGE_TAG}</jib.to.image>
			<jib.to.auth.username>AWS</jib.to.auth.username>
			<jib.to.auth.password>${AWS_ECR_PASSWORD}</jib.to.auth.password>
		</properties>
	</profile>
</profiles>

 

 

내부 프로젝트의 xml( 그다음 최하단(container) )

<!-- 다른 프로젝트 참조	-->
<dependencies>
    <dependency>
        <groupId>ai.treed.vali</groupId>
        <artifactId>infrastructure</artifactId>
    </dependency>
    <dependency>
        <groupId>ai.treed.vali</groupId>
        <artifactId>presentation</artifactId>
    </dependency>
</dependencies>

<!-- 빌드 관련	-->
 <build>
    <plugins>
        <!-- Maven Compiler Plugin -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven-compiler-plugin.version}</version>
            <configuration>
                <annotationProcessorPaths>
                    <path>
                        <groupId>com.querydsl</groupId>
                        <artifactId>querydsl-apt</artifactId>
                        <version>${querydsl.version}</version> <!-- Or your QueryDSL version -->
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>

        <!-- Spring Boot Plugin for Buildpacks -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>jib-maven-plugin</artifactId>
            <version>3.4.3</version>
            <configuration>
                <to>
                    <image>${jib.to.image}</image>
                    <auth>
                        <username>${jib.to.auth.username}</username>
                        <password>${jib.to.auth.password}</password>
                    </auth>
                </to>
            </configuration>
        </plugin>

    </plugins>
</build>

'Backend > 기타' 카테고리의 다른 글

키클락( keycloak )  (2) 2024.12.17
헥사고날 아키텍처(Hexagonal Architecture)  (0) 2024.07.15
도커( Doker )  (0) 2024.04.29
최소 지식 원칙( 데메테르의 법칙 )  (0) 2023.05.23
Nginx 란?  (0) 2023.01.19