title: "[Java] maven"
date: 2019-01-01 01:39:59
Maven
외부 라이브러리 jar 추가하기
1) 외부 jar가 위치한 폴더 추가
<repositories>
<repository>
<id>local-maven-repo</id>
<url>file:///${project.basedir}/libs</url>
</repository>
</repositories>
2) dependency 추가
groupId/artifactId/version 정보는 외부 jar 파일에 포함된 pom.properties 파일을 참고
/META-INF/maven/demo/pom.properties
<dependencies> <dependency> <groupId>com.demo</groupId> <artifactId>demo</artifactId> <version>2.0.3</version> </dependency> </dependencies>
실행 가능한 jar 만들기
1) maven-assembly-plugin
외부 jar 파일도 함께 포함된 실행 가능한 jar 파일 생성
외부 라이브러리 jar 파일이 빌드 결과 실행 jar 파일에 jar 형식으로 포함되지 않고 압축이 다 풀린 class 구조로 포함이 됨
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.demo.executejar</groupId> <artifactId>executeDemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>utf-8</project.build.sourceEncoding> <project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <archive> <manifest> <!-- main class path --> <mainClass> executeDemo.demo.StartMain </mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <appendAssemblyId>false</appendAssemblyId> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
### 2) Eclipse Export 기능 사용
- 테스트 : STS 4.0
- File -> Export -> Java -> Runnable JAR File
## rt.jar 에러
- maven-compiler-plugin 설정에 -XDignore.symbol.file 옵션 추가
``` xml
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<fork>true</fork>
<compilerArgs>
<arg>-XDignore.symbol.file</arg>
</compilerArgs>
</configuration>
</plugin>
참고
특정 버전 셋팅
javac 옵션
java jar
How to Create an Executable JAR with Maven