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>

참고

+ Recent posts