본문 바로가기

정리글

JAVA Maven 라이브러리 분리 (without dependency)

이전 게시글에서는 Maven에서 라이브러리를 뺀 jar파일을 만들었다.

void-inside.tistory.com/25?category=868967

 

JAVA Maven에서 나는 라이브러리를 별도로 쓰고 싶었다

이전에 정리하였던 Leshan LWM2M을 아직 프로젝트에서 사용하고 있다. Leshan LWM2M은 Maven을 이용하여 프로젝트를 관리한다. Maven project는 pom.xml에서 Library dependency를 설정하고, 배포방식을 설정할 수..

void-inside.tistory.com

하지만 이 방식은 직접 class-path와 Main class를 MANIFEST에 입력해주어야 했다.

이걸 자동으로 해주는 작업이 필요했다.

그래서 pom.xml에 plugin을 추가하였다.

<plugin>
    			<groupId>org.apache.maven.plugins</groupId>
    			<artifactId>maven-jar-plugin</artifactId>
    			<configuration>
                    <archive>
                        <manifest>
                        	<addClasspath>true</addClasspath>
                        	<classpathPrefix>lib/</classpathPrefix>
                            <mainClass>org.eclipse.leshan.client.demo.LeshanClientDemo</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

<mainClass>에 main함수가 들어있는 파일을 지정해주었다.

이 코드가 없으면 main class를 찾지못해 No main manifest 오류가 발생한다.

그리고 <classpathPrefix>에 참조할 라이브러리의 경로를 적어준다.

이제 jar파일이 있는 경로의 lib 폴더에 라이브러리를 넣어주면 된다.

지난번 게시물에 썼던 Class-Path를 자동으로 적어주는 것이다.

즉, 이 코드는 manifest를 자동으로 생성해주는 코드이다.

그래서 <manifest>로 묶여있다.

 

아. 그래서 이제 jar를 열어 manifest를 수정안해도 된다.

그럼 Class-Path에 라이브러리를 넣어야한다.

그 라이브러리는 어디서 가져와야할까?

Repository에서 직접 가져올 수도 있다.

실제로 난 지난번에 직접 가져와서 넣었다.

근데 찾아보니 그것도 자동으로 정리해주는 plugin이 있었다.

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
    			<executions>
        			<execution>
            			<id>copy</id>
            				<phase>install</phase>
            			<goals>
                		<goal>copy-dependencies</goal>
            			</goals>
            			<configuration>
                			<outputDirectory>
                    			${project.build.directory}/lib
                			</outputDirectory>
            			</configuration>
        			</execution>
    			</executions>
			</plugin>

라이브러리를 모두 모아서 lib폴더에 넣어주는 plugin이다.

프로젝트 빌드 경로, 즉. jar파일이 생기는 곳에서 lib폴더를 만들어 그 안에 라이브러리를 넣어준다.

그러면 우리는 이 라이브러리를 jar파일과 같이 복붙하면 된다.

생성된 lib 폴더