Maven jar 中没有主要清单
no main manifest in maven jar
我用 mvn clean install
构建了 this project。现在我有一个 .jar
文件,但我无法将其用于:
λ java -jar flyway-commandline-xxx.jar
no main manifest attribute, in flyway-commandline-xxx.jar
我错过了什么?
可执行 jar 需要 "manifest file" - 它位于 jar 内的 META-INF/MANIFEST.MF
。
您可以使用 Maven Assembly 插件生成符合以下要求的清单文件:
...
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<archive>
<manifest>
<mainClass>dk.tbsalling.ais.cli.AisCli</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
...
MainClass
(在清单文件中引用)是包含执行 jar 时调用的 main(...)
方法的 class。
您可以查看 https://github.com/tbsalling/aiscli/blob/master/pom.xml 以获得完整的工作示例。
我用 mvn clean install
构建了 this project。现在我有一个 .jar
文件,但我无法将其用于:
λ java -jar flyway-commandline-xxx.jar
no main manifest attribute, in flyway-commandline-xxx.jar
我错过了什么?
可执行 jar 需要 "manifest file" - 它位于 jar 内的 META-INF/MANIFEST.MF
。
您可以使用 Maven Assembly 插件生成符合以下要求的清单文件:
...
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<archive>
<manifest>
<mainClass>dk.tbsalling.ais.cli.AisCli</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
...
MainClass
(在清单文件中引用)是包含执行 jar 时调用的 main(...)
方法的 class。
您可以查看 https://github.com/tbsalling/aiscli/blob/master/pom.xml 以获得完整的工作示例。