2020. 5. 11. 20:04ㆍDevelopment/[Dev] 개발일반
인텔리J 2020.1월 버전 기준
인텔리j에서 jar를 배포하는 것은 프로젝트 구성 방식이 maven 인지 gradle 인지에 따라 달라진다.
*. jar란?
JAR는 여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷
- https://ko.wikipedia.org/wiki/JAR_(파일_포맷)
(1) [ Maven Project 에서 jar 배포 ]
[ 스프링 부트 maven Project 에서 jar 배포를 할때에는 아래 작업부터 선 진행함 ]
1) pom.xml 수정
1. properties 항목 확인하여 추가 수정
*. jar 실행시 실행되는 첫 클래스 지정 : <start-class>
*. 외부 추가 라이브러리 위치 : <webapp.lib>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<start-class>패키지위치를 포함한 시작클래스 위치 및 이름</start-class>
<webapp.lib>${basedir}/src/lib</webapp.lib>
</properties>
1. 기본 빌드 배포 환경 만들어 놓기
*. artifact 는 사전적으로 "인공물" 이라는 뜻이 있는데..아무래도 프로젝트의 결과물은 하나의 "산출물"을 만들어내는 동작이기때문에 artifact 라는 단어를 사용하지 않았을까 싶다.
2. 이후부터는 여기서부터 계속 반복하여 배포 가능
*. 배포 jar 위치
(2) [ Gradle Project 에서 jar 배포 ]
1. 빌드 옵션 일부 수정
- 인텔리j의 우측 [Gradle] 에서 프로젝트 > Tasks > build > jar 를 따라가서 우클릭
- Arguments 에 Flume Home 디렉토리 경로/lib/*을 넣는다 ( 이 내용은 빼도 되는지 아닌지 확인중)
*. 입력 : -cp /usr/local/Cellar/flume/1.9.0_1/libexec/lib/*
argu 설정
- 빌드 : 창을 닫고 다시 jar 더블클릭
저 항목을 더블클릭하면 빌드가 시작된다.
*. 배포 jar 위치
- 정상 빌드 완료시 다음 위치에 2가지 버전으로 jar 파일들이 생성된다. (외부라이브러리가 함께 들어있는 버전(-all), 단독 버전)
*. jar 실행 관련
- 자동 클래스 실행 : gradle 프로젝트로 내보낸 경우 아래와 같이 build.gradle 에서 attributes 'Main-Class'를 설정하였다면 으므로, jar 실행시 자동으로 해당 클래스를 최우선 실행 클래스로 실행한다.
jar {
finalizedBy shadowJar
manifest {
attributes 'Main-Class': 'com.sentilab.MySink',
'Implementation-Title': 'MySink'
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
- 수동으로 지정해서 특정 클래스 실행 : java -cp jar파일이름 패키지클래스명(또는 클래스명)
$ java -cp 이름.jar com.sentilab.MySink
'Development > [Dev] 개발일반' 카테고리의 다른 글
[git] Xcode pbxproj merge conflict 해결방법 (0) | 2020.11.19 |
---|---|
안드로이드 스튜디오 유용한 단축키 (0) | 2020.06.14 |
아파치 카프카(Kafka) : 스프링부트 환경 구축 - 3 of 3 (4) | 2020.05.08 |
아파치 카프카(Kafka) : 설치 및 실행 - 2 of 3 (0) | 2020.04.29 |
아파치 카프카(Kafka) : 설치 및 실행 - 1 of 3 (1) | 2020.04.27 |