maven 으로 executable jar 맨들기(maven-jar-plugin, maven-dependency-plugin 이용)

일반 웹어플리케이션이 아닌 그냥 보통 일반 프로그램인 경우 maven packaging  타입을 war 가 아니라 jar 로 pom.xml 파일을 설정한다.

요래 설정한후 디펜던시들을 쪽쪽 추가하면서 후로그램을 맨들다 후로그램이 다 완성되었다면~~.

내가만든 후로그램과(Executable jar), 내 후로그램에서 사용한 라이브러리들을(디펜던시) 묶어서 패키징을 해야 한다.




요런 패키징을 위해서 프로젝트 pom.xml 의 build 엘리먼트를 요래 설정해 주면된다. 
설명은 주석으로 대신함.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<properties>
    <deploy.target.dir>c:/myproject</deploy.target.dir>
    <lib.dir>lib</lib.dir>
    <jar.name>myprogram</jar.name>
</properties>
     
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.2</version>
             
            <configuration>
                <finalName>${jar.name}</finalName>
                <!-- jar 파일이 생성될 폴더 -->
                <outputDirectory>${deploy.target.dir}</outputDirectory>
                <archive>
                    <manifest>
                        <!-- public static void main() 함수가 있는 클래스 지정 -->
                        <mainClass>oasyss.Main</mainClass>
                         
                        <!-- jar 파일 META-INF/MANIFEST.MF 에 클래스패스 정보 추가 -->
                        <addClasspath>true</addClasspath>
                         
                        <!--
                            클래스패스에 추가시 prefix 설정
                            ex) log4j-1.2.16.jar -> lib/log4j-1.2.16.jar 로 추가됨
                        -->
                        <classpathPrefix>${lib.dir}/</classpathPrefix>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
         
        <!-- package 실행할때 프로젝트 디펜던시들을 특정폴더로 복사해주게 설정  -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <outputDirectory>${deploy.target.dir}/${lib.dir}</outputDirectory>
                <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
        </plugin>
    </plugins>
</build>




요래 해준다음 mvn clean package 를 뽓 실행시켜주면, deploy.target.dir 로 설정된 c:\myproject 폴더에 myprogram.jar 파일이 생성되고 c:\myproject\lib 폴더에 디펜던시들이 쪽 복사가 된다.



※ 요 jar 파일을 실행할려면

일반 자바후로그램인 경우 java -jar myprogram.jar  로
Swing이나 SWT 같은 GUI 후로그램인 경우 javaw -jar myprogram.jar 로 실행하면 된다.










Article Category

분류 전체보기 (223)
이클립 (28)
maven (9)
Spring (7)
Java (26)
mybatis (8)
jQuery Plugi.. (8)
Javascript (14)
Javascript 예.. (12)
CSS (2)
잡다구리 샘플 (4)
쓸만한지식 (81)
Ubuntu serve.. (22)
쇼핑물건 평가 (1)

Recent Article