2 minute read

오늘은 maven 으로 빌드하여 jar 파일을 만들 때 jar 파일에 MANIFEST.MF 파일이 생성되도록 하는 것과, MANIFEST.MF 파일에 git 정보 및 자신이 작성하고 싶은 내용들을 작성하는 방법에 대해서 알아보겠습니다.

본 포스트를 작성하게 된 이유

회사에서 제가 관리하는 프로젝트들 ant build를 사용하다가 종속성 문제와 다른 팀들은 모두 maven build를 사용하고 있어 공통으로 맞추고자 maven build로 바꾸게 되면서 ant build로 jar 파일을 생성할 때에는 MANIFEST.MF 파일을 jar 파일 내부에 생성하고 정보도 추가해 주도록 되어 있었지만 (정확한 정보가 추가가 되지는 않았습니다…) maven build로 변경하면서 저는 maven에서는 MANIFEST.MF 파일 생성이 안되나 보다 하고 있었습니다.
그러다 다른 팀에서 제가 속한 팀이 관리하고 있는 모듈의 자세한 정보 파악을 위해 jar 파일 내부에 MANIFEST.MF 파일이 필요하다는 요청을 받게 되었고, 요청을 처리하면서 maven에서도 빌드 시 MANIFEST.MF 을 생성할 수 있고, 추가하고 싶은 내용도 추가할 수 있다는 것을 알게되어 알게 된 내용들은 포스트로 작성하여 기록을 해놔야 겠다는 생각을 하게 되어 본 포스트를 작성하게 되었습니다. 그리고 한국어로 쓰여진 블로그에서는 maven 빌드 시 MANIFEST.MF 파일을 생성하거나, maven으로 MANIFEST.MF 파일을 생성할 때 넣고 싶은 내용을 추가하는 방법에 대해서는 포스팅 내용이 없어 본 포스트를 써야겠다는 생각도 하게 되어 포스트를 작성하게 되었습니다.

maven 빌드 시 MANIFEST.MF 파일 추가하는 방법

pom.xml 파일의 build 항목에 다음과 같이 추가를 해주면 maven 빌드 시 MANIFEST.MF 파일이 추가가 됩니다

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.1</version>
            <configuration>
                <archive>
                    <manifestEntries>
                        <version>${version}</version>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

MANIFEST.MF에 원하는 정보를 넣고 싶다면 manifestEntries 내부에 자신이 넣고자 하는 것을 다음과 같은 방법으로 추가를 해주면 됩니다.

에 MANIFEST.MF에 내가 넣고자 항목을

<넣고자하는항목>넣고자하는내용

으로 추가해주면 됩니다. 아래 예시에서는

example

로 넣어 주었을 때 MANIFEST.MF 파일에 씌여지는 예시이다.

``` org.apache.maven.plugins maven-jar-plugin 3.1.1 example ``` ``` Manifest-Version: 1.0 Created-By: Apache Maven 3.8.1 Build-Jdk: 1.8.0_392 example: example ``` ## MANIFEST.MF 에 git 정보 추가하기 MANIFEST.MF는 JAR 파일에 패키징된 파일들에 대한 정보를 가지고 있는 파일로 전자서명, 버전관리, 패키징 등의 정보를 제공해 줍니다. 그래서 JAR 파일을 만들어줄 때에 버전과 함께 git 정보까지 추가해 준다면 라이브러리를 배포했을 때의 git 정보를 활용해서 과거의 어느 시점에서 버그가 발생했는지 파악이 용이 합니다. git 정보를 추가해 주기 위해 `pom.xml`의 `build` 항목의 `plugins`에서 다음과 같이 추가해 줍니다. ``` pl.project13.maven git-commit-id-plugin 2.2.4 get-the-git-infos revision validate ${project.basedir}/.git ``` 위와 같이 추가해준 이후에 MANIFEST.MF 파일을 추가해 주기 위한 `plugin`에서 다음과 같이 추가해 줍니다. ``` org.apache.maven.plugins maven-jar-plugin 3.1.1 ${git.branch} ${git.commit.id.abbrev} ``` 다음과 같이 MANIFEST.MF 파일에 git branch 정보와 git-commit-id 정보가 추가된 것을 확인할 수 있습니다. ``` Manifest-Version: 1.0 git-branch: master git-commit-id: 7804093 Created-By: Apache Maven 3.8.1 Build-Jdk: 1.8.0_392 ``` ## 마치며 maven 빌드 시에 MANIFEST.MF 파일이 생성되도록 하고, MANIFEST.MF 파일에 넣고자 하는 내용들을 넣는 방법에 대해서 알아보았습니다. 제가 작성한 포스트가 다른 분들에게도 큰 도움이 되었으면 좋겠습니다. 작성한 포스트의 내용은 제가 차후에 일을 하거나 개인적은 프로젝트를 할 때를 위해 메모 느낌으로 작성했기 때문에 틀린 내용이 있을 수 있습니다. 틀린 내용을 발견하시면 큰 비난 보다는 댓글로 잘못된 부분을 알려주시면 감사하겠으며, 궁금하신 내용도 댓글로 작성 부탁 드리겠습니다. 긴 글 읽어주셔서 감사합니다.

Tags:

Categories:

Updated:

Comments