Maven 을 사용 하여 응용 프로그램 을 포장 합 니 다.maven-jar-plugin&maven-assembly-plugin&maven-shade-plugin
7226 단어 jdk
소개
maven-jar-plugin
,maven-assembly-plugin
와maven-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
addClasspath
와classpathPrefix
는lib
의 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
2022년 3월 21일 TIL1. JVM & JDK JVM JRE 자바 실행 환경의 약자로 자바 프로그램을 실행하기 위한 도구들이 들어있으며 JVM이 이 안에 포함된다 JDK JRE + 개발툴 javac는 컴파일 명령어 HelloWorld.cl...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.