Maven 을 사용 하여 응용 프로그램 을 포장 합 니 다.maven-jar-plugin&maven-assembly-plugin&maven-shade-plugin

7226 단어 jdk
원본 링크:https://www.dubby.cn/detail.html?id=9091
소개maven-jar-plugin,maven-assembly-pluginmaven-shade-plugin의 사용,그들 과 의 차이.원문 은 다음 과 같다.https://blog.dubby.cn/detail.html?id=9091
1.maven-jar-plugin
우선,이 plugin 을 설정 해 야 합 니 다:

    org.apache.maven.plugins
    maven-jar-plugin
    
        
            
                true
                lib/
                cn.dubby.maven.jar.plugin.Main
            
        
    


시작 클래스 작성:
public static void main(String[] args) {
    System.out.println("Hello, this is a application packaged by maven-jar-plugin");
      LocalDateTime localDateTime = new LocalDateTime();
      System.out.println(localDateTime);
}

시작:
➜  target git:(master) ✗ java -jar maven-jar-plugin-1.0-SNAPSHOT.jar
Hello, this is a application packaged by maven-jar-plugin

하지만 의지 하 나 를 더 하면?
우 리 는joda-time의 의존 을 더 했다.

    
    
        joda-time
        joda-time
        2.9.9
    


시작 클래스 수정:
public static void main(String[] args) {
    System.out.println("Hello, this is a application packaged by maven-jar-plugin");
    LocalDateTime localDateTime = new LocalDateTime();
    System.out.println(localDateTime);
}

다시 실행:
➜  target git:(master) ✗ java -jar maven-jar-plugin-1.0-SNAPSHOT.jar
Hello, this is a application packaged by maven-jar-plugin
Exception in thread "main" java.lang.NoClassDefFoundError: org/joda/time/LocalDateTime
        at cn.dubby.maven.jar.plugin.Main.main(Main.java:13)
Caused by: java.lang.ClassNotFoundException: org.joda.time.LocalDateTime
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 1 more

우리 가 늘 어 난 의존 을 찾 지 못 한 것 을 발견 하면 어 떡 하지?
위 설정maven-jar-plugin의 다른 두 설정 항목 을 주의 깊 게 관찰 하 십시오.

    org.apache.maven.plugins
    maven-jar-plugin
    
        
            
                true
                lib/
                cn.dubby.maven.jar.plugin.Main
            
        
    

addClasspathclasspathPrefixlib의 jar 를 제3자 의존 으로 package 에 가입 하 겠 다 고 밝 혔 기 때문에 의존 도 를lib디 렉 터 리 에 복사 해 야 합 니 다.우 리 는 사용 할 수 있 습 니 다maven-dependency-plugin.

    org.apache.maven.plugins
    maven-dependency-plugin
    
        
            copy
            compile
            
                copy-dependencies
            
            
                
                    ${project.build.directory}/lib
                
            
        
    


이렇게 해서 우 리 는 다시 포장 하고 다시 운행 한다.
➜  target git:(master) ✗ java -jar maven-jar-plugin-1.0-SNAPSHOT.jar
Hello, this is a application packaged by maven-jar-plugin
2018-01-22T14:48:00.915

target 디 렉 터 리 에 가면 lib 디 렉 터 리 가 하나 더 있 습 니 다.
원문 은 다음 과 같다.https://blog.dubby.cn/detail.html?id=9091
2.maven-assembly-plugin
플러그 인 설정 하기:


    org.apache.maven.plugins
    maven-assembly-plugin
    2.4.1
    
        
        
            jar-with-dependencies
        
        
        
            
                cn.dubby.maven.assembly.plugin.Main
            
        
    
    
        
            make-assembly
            
            package
            
                single
            
        
    


시작 클래스:
public static void main(String[] args) {
    System.out.println("Hello, this is a application packaged by maven-assembly-plugin");
    LocalDateTime localDateTime = new LocalDateTime();
    System.out.println(localDateTime);
}

패키지 실행 결과:
➜  target git:(master) ✗ java -jar maven-assembly-plugin-1.0-SNAPSHOT-jar-with-dependencies.jar
Hello, this is a application packaged by maven-assembly-plugin
2018-01-22T15:44:05.166

원문 은 다음 과 같다.https://blog.dubby.cn/detail.html?id=9091
3.maven-shade-plugin
설정 은 다음 과 같 습 니 다:


    org.apache.maven.plugins
    maven-shade-plugin
    3.1.0
    
        
            package
            
                shade
            
            
                
                    
                        cn.dubby.maven.shade.plugin.Main
                    
                
            
        
    


시작 클래스:
public static void main(String[] args) {
    System.out.println("Hello, this is a application packaged by maven-shade-plugin");
    LocalDateTime localDateTime = new LocalDateTime();
    System.out.println(localDateTime);
}

결과:
➜  target git:(master) ✗ java -jar maven-shade-plugin-1.0-SNAPSHOT.jar
Hello, this is a application packaged by maven-shade-plugin
2018-01-22T15:42:19.662

원문 은 다음 과 같다.https://blog.dubby.cn/detail.html?id=9091
4.package 비교
-rw-r--r--  1 teeyoung  staff   622K  1 22 15:43 maven-assembly-plugin-1.0-SNAPSHOT-jar-with-dependencies.jar
-rw-r--r--  1 teeyoung  staff   3.1K  1 22 14:47 maven-jar-plugin-1.0-SNAPSHOT.jar
-rw-r--r--  1 teeyoung  staff   622K  1 22 15:42 maven-shade-plugin-1.0-SNAPSHOT.jar

좋은 웹페이지 즐겨찾기