외부 라이브러리를 WAR 파일에 넣어 export 하는 법

손건·2021년 5월 14일
0

IT

목록 보기
11/13
post-thumbnail

maven을 사용하여 라이브러리를 추가하고 있는데 오라클 jdbc를 불러올 수가 없게 되었다고 합니다. 결국 lib를 직접 다운로드 하고 적용한 후에 export를 해야하는데 몆가지 설정을 해야 누락이 되지 않아서 기록으로 남깁니다.

1. 의존성 주입 설정

프로젝트 경로안에 lib라는 디렉토리를 만들었습니다. 이름은 당연히 아무거나 작성하면 됩니다.
여기서 ojdbc14-10.2.0.4.0.jar를 불러오도록 pom.xml을 작성합니다.

	<!-- Database -->
	<!-- 오라클 DBMS는 메이븐으로 다운 받을수 없어 로컬데이터 사용 -->
	<dependency>
	    <groupId>oracle.jdbc</groupId>
	    <artifactId>OracleDriver</artifactId>
	    <version>10.2.0.4.0</version>
	    <scope>system</scope>
        <systemPath>${basedir}/lib/ojdbc14-10.2.0.4.0.jar</systemPath>
	</dependency>
    

basedir에 대한 설정이 없기 떄문에 처음에 이 코드가 정상 작동하는지 의심(?)을 조금 했습니다. project.basedir은MAVEN에서 미리 설정해놓은 경로로 현재 프로젝트의 디렉토리를 의미 합니다. project는 생락하여 입력할 수 있습니다.

2. export 시 lib추가

이렇게 이클립스를 실행시키면 jdbc를 잘 읽어와서 사용은 가능하지만 war로 추출하게되면 데이터가 빠지게 됩니다. 강제로 target 폴더에 넣어주는 것도 방법이지만 maven으로 설정하는 방법이 있었습니다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>

    <configuration>
        <webResources>
            <resource>
                <!-- 로컬 lib파일 경로 -->
                <directory>${basedir}/lib</directory>
                <includes>
                    <include>추가할라이브러리.jar</include>                 
                </includes>
                <targetPath>WEB-INF/lib</targetPath>
            </resource>
        </webResources>
    </configuration>
</plugin>

블로그 참고 : 링크

여기서 주목해야 되는 부분은 webResources 부분입니다. 위와 동일하게 basedir를 이용하여
다운받은 라이브러리의 위치를 표시해주면 됩니다. 추가할 라이브러리는 1개만 넣을 수도 있고 include를 늘려 여러개를 작성할 수도 있습니다.

제가 작업하던 프로젝트에는 여러 메이븐 설정이 되어 있었지만 위에 xml코드 만 추가한다면 별다른 오류 없이 작동할 수 있었습니다.
아래 코드는 제가 개발하고 있는 코드의 설정 일부 데이터 입니다.

<build>
	<finalName>프로젝트 이름</finalName>
		
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>3.3</version>
			<configuration>
				<source>1.7</source>
				<target>1.7</target>
			</configuration>		
          	</plugin>
		
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-war-plugin</artifactId>
			<version>2.1.1</version>
			<configuration>					<warSourceDirectory>src/main/webapp</warSourceDirectory>
				<!-- 서블릿을 연결하기전 jsp 파일만을 보려할 때 주석으로 처리한다 -->
				<warSourceExcludes>html/**</warSourceExcludes>
				<warSourceExcludes>**/template/**</warSourceExcludes>
				<warSourceExcludes>**/*.sql</warSourceExcludes>
					
										<webResources>
		            <resource>
			               <!-- 로컬 lib파일 경로 -->
			               <directory>${basedir}/lib</directory>
			               <includes>
			                   <include>ojdbc14-10.2.0.4.0.jar</include>			 					<include>추가할 jar 파일명</include>
		                </includes>
		                <targetPath>WEB-INF/lib</targetPath>
		            </resource>       				 </webResources>
				</configuration>
			</plugin>
			
		</plugins>		
	</build>

간단하게 MAVEN으로 외부 라이브러리 적용이 끝났습니다.

profile
4년차 게임기획자, 1년차 웹개발자

0개의 댓글