【问题标题】:What exactly do the maven-jar-plugin Maven plugin? What is the difference using or not using this plugin?maven-jar-plugin Maven 插件到底是做什么的?使用或不使用此插件有什么区别?
【发布时间】:2017-09-29 01:58:20
【问题描述】:

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

我正在寻找我过去工作过的另一个类似的旧项目并进入它的 pom.xml 我可以找到这个 ma​​ven-jar-plugin 插件:

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

那么这个 ma​​ven-jar-plugin 究竟做了什么(同样不使用它,ma​​ven install 语句会生成一个已编译的 .jar 文件) .使用和不使用这个插件有什么区别?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

       Exception in thread "main" java.lang.NoClassDefFoundError 
      

      不管你是否在其他地方添加了这一行:

      <mainClass>yourapp.Mainclass</mainClass>
      

      正确的做法是在maven-jar-plugin中加入以上行

      【讨论】:

        猜你喜欢
        • 2018-06-16
        • 2014-10-10
        • 2015-03-23
        • 2015-05-13
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        • 2021-01-18
        • 1970-01-01
        相关资源
        最近更新 更多