maven-jar-plugin Maven插件究竟是什么?使用或不使用此插件有什么区别?

时间:2017-05-01 16:36:02

标签: java spring maven pom.xml maven-jetty-plugin

我正在开发一个简单的Spring控制台应用程序(它是一个具有经典main()方法()的类的批处理,我对 pom.xml Maven文件有以下疑问。此文件仅包含工作所需的Spring依赖项。当我运行 Maven安装声明时,它会将相关的 .jar 编译的应用程序生成到我项目的目标目录中。

我正在寻找我过去工作的另一个类似的旧项目,并进入 pom.xml 我可以找到这个 maven-jar-plugin 插件:< / p>

<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>

那么 maven-jar-plugin 究竟做了什么(也没有使用 maven install 语句生成一个已编译的 .jar 文件) 。使用或不使用此插件有什么区别?

2 个答案:

答案 0 :(得分:0)

jar插件允许我们定义默认的清单文件。使用该选项,位于$ {project.build.outputDirectory} /META-INF/MANIFEST.MF的文件将成为jar中的清单文件 maven jar插件提供了构建jar文件的功能,如果你定义你的项目打包为jar文件,maven会隐式调用这个插件。我们不需要在pom.xml中定义它,它将被下载并在maven需要时执行。无论你是否在你的pom中使用它都无关紧要,如果需要它将由maven自动加载。

请参阅此链接以获得更好的承诺 https://examples.javacodegeeks.com/enterprise-java/maven/maven-jar-plugin-example/

答案 1 :(得分:0)

Maven Jar插件负责配置项目主类的位置,以便将其添加到Jar的清单文件中。如果在尝试运行jar文件时未包含此插件,则会出现此错误:

 Exception in thread "main" java.lang.NoClassDefFoundError 

无论你是否在其他地方添加了这一行:

<mainClass>yourapp.Mainclass</mainClass>

正确的方法是在maven-jar-plugin中添加上面的行。