Maven Assembly Plugin 未设置 MainClass 清单设置

2024-05-14

我有一个 Maven 项目,它通过以下方式生成一个 jarMaven 组装插件 http://maven.apache.org/plugins/maven-assembly-plugin/我想作为控制台应用程序运行。但是,MainClass 属性未在 MANIFEST.MF 中设置。这是我的插件配置:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2.1</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>net.justaprogrammer.poi.cleanser.Cleanser</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

但是,这不会添加到由生成的 jar 中的 MANIFEST.MFmvn package。生成的清单如下:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: zippy
Build-Jdk: 1.6.0_25

我究竟做错了什么?


我错过了您没有在包上生成程序集。您有一个 jar 项目,因此 Maven 将使用 maven-jar-plugin 构建一个 jar。你的 pom 中不需要有任何东西来告诉它。这就是 Maven 的约定优于配置的方式为您服务。它构建的 jar 中将只包含您的项目类和资源。如果您想将 Main-Class 添加到该 jar 中的清单中,您应该配置 jar 插件来执行此操作 http://maven.apache.org/shared/maven-archiver/examples/classpath.html#Make。基本上,只要移动它archivejar 插件的配置。

但是,如果您确实想要组装一个可执行的 fat jar(即,一个包含所有类以及所有依赖项的类的 jar),那么您的设置就在正确的位置,但您需要实际运行程序集插件可以使用mvn assembly:single or by 将该目标绑定到生命周期阶段 http://maven.apache.org/plugins/maven-assembly-plugin/usage.html#Execution:_Building_an_Assembly。需要明确的是,如果你这样做,那么你的项目将输出twojars:一个包含您的项目文件,另一个包含该项目文件以及您的项目所依赖的所有库的内容。前者是由jar插件构建的。后者是由程序集插件构建的。请注意,fat jar 并不常用,并且在使用它们时可能会遇到不寻常的问题,因为它们超出了正常 Java 内容的范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven Assembly Plugin 未设置 MainClass 清单设置 的相关文章

随机推荐