Javaのjarファイルの中にはMANIFEST.MFというマニフェストを含むことができます。
マニフェストファイルとは
マニフェストファイルとは、jarのバージョン情報やクラスパスの情報が格納されたファイルです。
jarファイルの中では
META-INF/MANIFEST.MF
に置いておきます。
以下が公式サイトです。
META-INFディレクトリとマニフェストの仕様について書かれています。
・https://docs.oracle.com/javase/jp/8/docs/technotes/guides/jar/jar.html
では、具体的にどこまでの情報を入れるんでしょうか?
・https://docs.oracle.com/javase/tutorial/deployment/jar/packageman.html
サンプルとして以下の例がありました。
Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)
Name: java/util/
Specification-Title: Java Utility Classes
Specification-Version: 1.2
Specification-Vendor: Example Tech, Inc.
Implementation-Title: java.util
Implementation-Version: build57
Implementation-Vendor: Example Tech, Inc.
このぐらいの情報が入っていればいいんでしょうか。
Gradleでマニフェストを入れる方法
Gradleでマニフェストを入れる方法は次の通りです。
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 |
repositories { mavenCentral() } dependencies { compile 'com.google.guava:guava:19.0' compile 'com.google.inject:guice:4.1.0' } shadowJar { mergeServiceFiles() archiveName "service.jar" exclude "META-INF/*.SF" exclude "META-INF/*.DSA" exclude "META-INF/*.RSA" manifest { attributes( [ 'Main-Class': "service.Service", 'Built-By': System.getProperty('user.name'), 'Built-Date': new Date(), 'Built-JDK': System.getProperty('java.version'), 'Implementation-Version': 'version', 'Implementation-Title': project.name, ] + project.configurations.compile.allDependencies.collect { d -> [ ("dependency-${d.group.replaceAll('\\.','-')}".toString()):"$d.group:$d.name:$d.version" ] }.sum() ) } } |
以下を参考にしました。
・https://stackoverflow.com/questions/37969253/use-gradle-to-embed-dependency-information-into-manifest
コメント