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 以获得完整的工作示例。