본문 바로가기
Programming Language/Java

[Java] (스크랩) maven으로 executable.jar 만들기(maven-jar-plugin, maven-dependency-plugin 이용)

by 뒹굴거리는프로도 2024. 2. 21.
반응형

 

 


일반 웹어플리케이션이 아닌 그냥 보통 일반 프로그램인 경우

maven packaging  타입을 war 가 아니라 jar 로 pom.xml 파일을 설정한다.

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

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


요런 패키징을 위해서 프로젝트 pom.xml 의 build 엘리먼트를 요래 설정해 주면된다. 

설명은 주석으로 대신함.

*pom.xml

<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 로 실행하면 된다.

 


출처: https://stove99.tistory.com/category/maven [스토브 훌로구:티스토리]

 

'maven' 카테고리의 글 목록

 

stove99.tistory.com

 

반응형