4

我已经. mvn clean install现在我有一个.jar文件,但我无法使用它:

λ java -jar flyway-commandline-xxx.jar
no main manifest attribute, in flyway-commandline-xxx.jar

我错过了什么?

4

1 回答 1

5

一个可执行的 jar 需要一个“清单文件”——它位于META-INF/MANIFEST.MFjar 内部。

您可以使用 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在清单文件中引用)是包含main(...)执行 jar 时调用的 -method 的类。

您可以查看https://github.com/tbsalling/aiscli/blob/master/pom.xml以获得完整的工作示例。

于 2018-08-21T10:59:06.750 回答