Maven 플러그인 carbon5로 데이터베이스 마이그레이션하기

기본

박재성님의 자바 세상의 빌드를 이끄는 메이븐을 보던 중, carbon5로 데이터베이스 마이그레이션 하는 부분이 잘 안돼서 방법을 찾아봤습니다.

1. 플러그인 인식을 못하는 문제

c5-db-migration 플러그인 페이지에서 Wiki -> MavenPlugin 페이지에 있는 예제 코드가 책에 나와있는 것과 같은데, 버전 차이가 나서 그런건지 플러그인 인식을 못하더라구요.

그래서 c5 저장소 페이지에 들어가서 pom 파일을 열어보다가 그룹 아이디가 좀 다른 것을 발견했습니다. 예제 코드에선 com.carbonfive.db-suuport 요렇게 되있는데 pom 파일을 확인해 보니 com.carbonfive 그냥 이렇게 되있더라구요. 그리고 <version>부분에서 RELEASE로 설정하면 에러가 발생하고 LASTEST로 했더니 경고가 발생합니다.(에러였던가?) 그래서 최신 버전으로 바꿔줬습니다.

<groupId>com.carbonfive</groupId>

<artifactId>db-migration-maven-plugin</artifactId>

<version>0.9.7</version>

2. db-migration:migrate 골 실행 시, JDBC URL에 접근할 수 없다는 에러가 발생하는 문제

c5 플러그인을 사용하기 전에 DB가 만들어져 있고 데이터도 들어 있었습니다. 그래서 그런지 에러가 발생했습니다. 이상하게 db-migration:drop 골도 에러가 발생하더라구요.

DB를 수동으로 drop 시키고 다시 migrate골을 실행해도 같은 문제 발생. DB를 수동으로 만들지 않고 db-migration:create 골을 이용해서 생성하고 다시 db-migration:migrate 골을 실행하니 정상적으로 돌아갔습니다.

migration 파일들이 생성되는 경로를 수정하고 디폴트 페이즈에 얹는 작업을 한 최종 결과:

<plugin>
	<groupId>com.carbonfive</groupId>
	<artifactId>db-migration-maven-plugin</artifactId>
	<version>0.9.7</version>
	<configuration>
		<url>${jdbc.url}</url>
		<username>${jdbc.username}</username>
		<password>${jdbc.password}</password>
		<migrationsPath>src/mavenpilot/config/migrations/</migrationsPath>
	</configuration>
	<dependencies>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.16</version>
		</dependency>
	</dependencies>
	<executions>
		<execution>
			<id>migrate-db-schema</id>
			<phase>process-test-resources</phase>
			<goals>
				<goal>migrate</goal>
				<goal>validate</goal>
			</goals>
		</execution>
	</executions>
</plugin>