Java maven jar插件maven plugin到底做了什么?使用或不使用这个插件有什么区别?
我正在开发一个简单的Spring控制台应用程序(这是一个批处理,有一个带有经典main()方法()的类),我对pom.xmlMaven文件有以下疑问。此文件仅包含工作所需的Spring依赖项。当我运行Maven installstation时,它会将相关的.jar编译应用程序生成到我的项目的目标目录中 我在寻找另一个类似的老项目,我过去曾参与过这个项目,现在我可以在它的pom.xml中找到这个maven jar插件插件:Java maven jar插件maven plugin到底做了什么?使用或不使用这个插件有什么区别?,java,spring,maven,pom.xml,maven-jetty-plugin,Java,Spring,Maven,Pom.xml,Maven Jetty Plugin,我正在开发一个简单的Spring控制台应用程序(这是一个批处理,有一个带有经典main()方法()的类),我对pom.xmlMaven文件有以下疑问。此文件仅包含工作所需的Spring依赖项。当我运行Maven installstation时,它会将相关的.jar编译应用程序生成到我的项目的目标目录中 我在寻找另一个类似的老项目,我过去曾参与过这个项目,现在我可以在它的pom.xml中找到这个maven jar插件插件: <plugin> <groupId>org
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.myCompany.main.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
org.apache.maven.plugins
maven jar插件
com.myCompany.main.MainClass
因此,这个maven-jar插件确切地做了什么(在不使用它的情况下,maven安装station会生成一个编译后的.jar文件)。使用或不使用此插件有什么区别?jar插件允许我们定义默认清单文件。使用该选项,位于${project.build.outputDirectory}/META-INF/MANIFEST.MF的文件将成为jar中的清单文件 maven jar插件提供了构建jars文件的功能,如果您将项目打包为jar文件,maven将隐式调用该插件。我们不需要在pom.xml中定义它,它将在maven需要时下载并执行。因此,无论您是否在pom中使用它,它都会在需要时由maven自动加载 请参阅此链接以获得更好的理解
Maven Jar插件负责配置项目主类的位置,以便将其添加到Jar的清单文件中。如果在尝试运行jar文件时未包含此插件,则会出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError
无论您是否在其他地方添加了此行:
<mainClass>yourapp.Mainclass</mainClass>
yourapp.main类
正确的方法是在maven jar插件中添加上述行