command lineμ νμ©ν JAR νμΌ μμ±νκΈ°
Java κ°λ°μμ JAR(Java Archive) νμΌμ Java ν΄λμ€ νμΌκ³Ό κ΄λ ¨ λ©νλ°μ΄ν°λ₯Ό νλμ νμΌλ‘ λ¬Άμ΄ λ°°ν¬ν μ μκ² ν΄μ£Όλ νμμ μΈ μμλ€. νλμ IDEλ Maven, Gradle κ°μ λΉλ λꡬλ€μ΄ JAR μμ±μ μλνν΄ μ£Όμ§λ§, JAR μμ± μλ νλ‘μΈμ€λ₯Ό μ΄ν΄νλ κ²μ Javaμ ν¨ν€μ§ μμ€ν μ μ΄ν΄νκΈ° μν΄ μ€μνλ€.
JDK(Java Development Kit) μ€μΉ νμ
JDK - μ»΄νμΌμ μν javacμ jar νμΌ μμ±μ μν jar κ°μ νμ λꡬλ€μ΄ ν¬ν¨λμ΄ μλ€.
JAR νμΌμ μλ° λ°νμμ΄ ν¨μ¨μ μΌλ‘ μ ν리μΌμ΄μ μ λ°°ν¬(deploy)ν μ μλ μλ¨μΌλ‘ μ€κ³λμλ€. μλ° μ ν리μΌμ΄μ μ ꡬμ±νλ ν΄λμ€μ κ΄λ ¨ 리μμ€λ€μ λ¨μΌ νμΌλ‘ λ¬Άμ΄ μμΆλ ννμΈ JAR νμΌμ ν μ°¨λ‘μ μμ²μΌλ‘ μ ν리μΌμ΄μ μ 체λ₯Ό λ€μ΄λ‘λν μ μκ² ν΄μ€λ€.
1. Java μμ€ μ½λ μμ±
public class MyJavaFile {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
2. μμ€ μ½λ μ»΄νμΌ
Java μμ€ μ½λλ₯Ό JVM(Java Virtual Machine)μ΄ μ€νν μ μλ λ°μ΄νΈμ½λλ‘ μ»΄νμΌν΄μΌ νλ€.
javac MyJavaFile.java
μ΄ λͺ λ Ήμ΄λ μ»΄νμΌλ λ°μ΄νΈμ½λκ° ν¬ν¨λ MyJavaFile.class νμΌμ μμ±νλ€.
λ§μ½ μμ€ μ½λμ λ¬Έλ² μ€λ₯ λ±μ λ¬Έμ κ° μλ€λ©΄ μ»΄νμΌλ¬κ° ν΄λΉ λ¨κ³μμ μ΄λ₯Ό μλ¦°λ€.
3. Manifest νμΌ μμ±
Manifest νμΌμ JARμ λ©νλ°μ΄ν°λ₯Ό ν¬ν¨νλ νΉλ³ν νμΌλ‘ μ€νν λ©μΈ ν΄λμ€μ λ²μ μ 보 κ°μ μ€μν μ 보λ₯Ό μ 곡νλ€.
- META-INF λλ ν 리 μμ±: mkdir META-INF
- META-INF λλ ν 리 μμ MANIFEST.MF νμΌμ μλμ κ°μ΄ μμ±:
Manifest-Version: 1.0
Main-Class: MyJavaFile
Built-By: μμ±μμ΄λ¦
Manifest νμΌ μμ± μ μ£Όμμ¬ν:
- νμΌ λμ λ°λμ μ μ€(newline)
- Main-Class μμ±μ main λ©μλκ° μλ ν΄λμ€λ₯Ό μ§μ
- Manifest νμμ μ½λ‘ (:)μΌλ‘ ꡬλΆλ ν€ : κ° μ
4. JAR νμΌ μμ±νκΈ°
jar λͺ λ Ήμ΄λ₯Ό μ¬μ©νμ¬ λͺ¨λ ν¨ν€μ§
jar cmvf META-INF/MANIFEST.MF myJarFile.jar MyJavaFile.class
λͺ λ Ήμ΄ μ΅μ μ€λͺ :
- c: μ μμΉ΄μ΄λΈ μμ±
- m: κΈ°μ‘΄ νμΌμ manifest μ 보 ν¬ν¨
- v: μμΈ μΆλ ₯ μμ±(μμΆλ₯ , μμ±μΌμ λ±)
- f: μμΉ΄μ΄λΈ νμΌλͺ μ§μ
μΆλ ₯ κ²°κ³Ό μ
added manifest
adding: MyJavaFile.class(in = 426) (out= 289)(deflated 32%)
5. JAR νμΌ ν μ€νΈνκΈ°
JAR νμΌ μ€ν
java -jar myJarFile.jar
μ€ν κ²°κ³Ό
Hello World!
μμ£Ό λ°μνλ λ¬Έμ μ ν΄κ²° λ°©λ²
- Manifest νμΌ ν¬λ§· κ΄λ ¨
- Manifest νμΌ λμ μ μ€μ΄ μλμ§ νμΈ
- ν€-κ° μμ μ½λ‘ λ€μ κ³΅λ°±μ΄ μλμ§ νμΈ
- Main-Classλ₯Ό μ¬λ°λ₯Έ ν΄λμ€ μ΄λ¦μΌλ‘ μ§μ νλμ§ νμΈ
- ν΄λμ€λ₯Ό μ°Ύμ μ μλ μ€λ₯
- νμν λͺ¨λ ν΄λμ€ νμΌμ΄ JARμ ν¬ν¨λμ΄ μλμ§ νμΈ
- ν¨ν€μ§ κ΅¬μ‘°κ° manifestμ Main-Class μ μΈκ³Ό μΌμΉνλμ§ νμΈ
- μΈλΆ μμ‘΄μ±μ μ¬μ©νλ κ²½μ° ν΄λμ€ν¨μ€κ° μ¬λ°λ₯΄κ² μ€μ λμ΄ μλμ§ νμΈ
- κΆν κ΄λ ¨ λ¬Έμ
- λμ λλ ν 리μ μ°κΈ° κΆνμ΄ μλμ§ νμΈ
- μμ±λ JAR νμΌμ μ€ν κΆνμ΄ μλμ§ νμΈ
κ³ κΈ JAR κΈ°λ₯
1) μ¬λ¬ νμΌ μΆκ°νκΈ°
μ¬λ¬ ν΄λμ€ νμΌμ΄λ 리μμ€λ₯Ό ν¬ν¨μν€κΈ°
jar cmvf META-INF/MANIFEST.MF myJarFile.jar *.class resources/
c(Create) : μλ‘μ΄ jar νμΌμμ±
m : μ§μ λ manifest νμΌλ‘λΆν° manifest μ 보λ₯Ό jar νμΌ λ΄ ν¬ν¨μμΌ μ€
v : μμΆλ₯ λ° μμ±μΌμ λ±μ μ 보 μ 곡
f : jar νμΌμ μ΄λ¦μ μ§μ ν κ²½μ° μ¬μ©
2) JAR λ΄μ© 보기
JAR νμΌ λ΄μ© λμ΄νκΈ°
jar tf myJarFile.jar
t(table) : jar νμΌμ λͺ©λ‘μ λμ΄
f : jar νμΌμ μ΄λ¦μ μ§μ ν κ²½μ° μ¬μ©
3) JAR λ΄μ© μΆμΆνκΈ°
jar xf myJarFile.jar
x(eXtract) : jarνμΌμμ νμΌ μΆμΆ
f : jar νμΌμ μ΄λ¦μ μ§μ ν κ²½μ° μ¬μ©
κ²°λ‘
νλμ λΉλ λꡬλ€μ΄ JAR μμ±μ μλνν΄ μ£Όμ§λ§, JAR νμΌ μμ±κ³Όμ μ μ΄ν΄λ μλμ κ°μ μν©μ νμνλ€.
- ν¨ν€μ§ λ¬Έμ λλ²κΉ
- 컀μ€ν λΉλ νλ‘μΈμ€ μμ±
- λΉλ λꡬμ λμ μ리 μ΄ν΄
- λΉλ λꡬλ₯Ό μ¬μ©ν μ μλ νκ²½μμμ μμ
μ°Έκ³ μλ£ :
https://engineering.tomtom.com/create-java-jar/
Back to Basics: How to create a java JAR using command line
In the world of Java development, JAR(Java Archive) files play a very important role in packaging and distributing our applications. Whether you are a beginner or an experienced developer, it’s essential to understand the process of creating a JAR file.
engineering.tomtom.com
https://ko.wikipedia.org/wiki/JAR_(%ED%8C%8C%EC%9D%BC_%ED%8F%AC%EB%A7%B7)
JAR (νμΌ ν¬λ§·) - μν€λ°±κ³Ό, μ°λ¦¬ λͺ¨λμ λ°±κ³Όμ¬μ
μν€λ°±κ³Ό, μ°λ¦¬ λͺ¨λμ λ°±κ³Όμ¬μ . JAR(Java Archive, μλ° μμΉ΄μ΄λΈ)λ μ¬λ¬κ°μ μλ° ν΄λμ€ νμΌκ³Ό, ν΄λμ€λ€μ΄ μ΄μ©νλ κ΄λ ¨ 리μμ€(ν μ€νΈ, κ·Έλ¦Ό λ±) λ° λ©νλ°μ΄ν°λ₯Ό νλμ νμΌλ‘ λͺ¨μμ μλ°
ko.wikipedia.org