Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';Maven Jar插件和Maven源插件的区别是什么?_Java_Eclipse_Maven_Plugins_Jar - Fatal编程技术网

Java 什么';Maven Jar插件和Maven源插件的区别是什么?

Java 什么';Maven Jar插件和Maven源插件的区别是什么?,java,eclipse,maven,plugins,jar,Java,Eclipse,Maven,Plugins,Jar,我正在阅读关于如何使用Maven创建jar文件的文章,但是我看到一些pom.xml文件使用Maven源插件,而其他文件使用Maven jar插件 在Apache Maven项目页面中,我找到了以下描述: ApacheMavenJAR插件 这个插件提供了构建JAR的功能。如果您喜欢签署JAR,请使用Maven Jarsigner插件 ApacheMaven源插件 源插件创建当前项目源文件的jar存档。默认情况下,jar文件是在项目的目标目录中创建的 阅读这些描述,我对何时使用一个或另一个插件,

我正在阅读关于如何使用Maven创建jar文件的文章,但是我看到一些pom.xml文件使用Maven源插件,而其他文件使用Maven jar插件

在Apache Maven项目页面中,我找到了以下描述:

ApacheMavenJAR插件
这个插件提供了构建JAR的功能。如果您喜欢签署JAR,请使用Maven Jarsigner插件


ApacheMaven源插件
源插件创建当前项目源文件的jar存档。默认情况下,jar文件是在项目的目标目录中创建的


阅读这些描述,我对何时使用一个或另一个插件,以及它们的区别或好处持怀疑态度,因为我知道两者都是一样的。

  • 用于构建包含.class文件的jar文件,以便以字节码格式分发应用程序或库

  • 用于构建包含源文件(.java文件)的jar文件,以便IDE在调试时显示源代码。此jar文件与包含.class文件的jar文件结合使用


    • maven jar插件

      jar插件从Maven项目创建一个jar文件。jar插件的jar目标绑定到Maven默认生命周期的包阶段。当您键入mvn clean install时,Maven将执行默认生命周期中的所有阶段,包括安装阶段,安装阶段也包括软件包阶段

      maven源插件

      源插件使用项目源代码创建一个JAR文件。它定义了五个目标:聚合、jar、测试jar、jar无叉和测试jar无叉。源插件的所有这五个目标都将在默认生命周期的包阶段运行

      与我们之前讨论的任何插件不同,如果您希望使用Maven默认生命周期执行源插件,则必须在项目POM文件中定义它,如下所示。超级POM文件没有定义源插件;它必须在Maven项目本身中

      有什么区别


      两者都创建JAR文件;但是,jar插件从二进制工件创建jar文件,而源插件从源代码创建jar文件。小型开源项目使用这种方法来分发相应的源代码和二进制工件。

      “源文件的jar存档”=包含*.java(源代码)文件的jar文件,而不是运行java应用程序所需的*.class(字节码)文件。谢谢回答。但是,还有一个疑问,这个源文件的jar存档默认只包含*.java文件?我可以使用
      来包含具有其他扩展名的文件,还是在这种情况下使用JAR插件更好?我想是的,但我不知道。到目前为止,我只使用了JAR插件。为什么不试试呢?源插件通常用于创建用于IDE的辅助工件(源文件)。jar插件已经用于
      jar
      (=default)项目,并用于创建主工件。因此,如果应用程序需要额外的文件,jar插件就是最好的选择。考虑源插件作为开发支持插件。