Maven打包没有指定主类(xxx.jar中没有主清单属性)

写在前面

​ 在使用IDEA开发项目的时候经常会遇到使用Maven打包项目(打成jar包或者zip包),但是之前不太清楚打包插件的使用,有时候会遇到在启动jar包的时候没有指定主类的错误(dd-1.0-SNAPSHOT.jar中没有主清单属性)。今天学习一下插件使用,写一个针对该问题的教程。

软件环境

​ IDEA:2017.1.5

​ Maven:3.3.9

打xxx.jar包(不包含依赖的jar包)

​ Maven可以不添加插件默认打jar包,但是如果想要修改默认的参数需要重新引入插件添加需要修改信息。

1. 修改pom.xml

<plugin>
    <groupId>org.apache.maven.pluginsgroupId>
    <artifactId>maven-jar-pluginartifactId>
    <version>3.1.0version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>demo.LoadDataMRmainClass>
            manifest>
        archive>
    configuration>
plugin>

2.使用Maven工具打包

​ 找到IDEA右边的【Maven Projects】->【项目名称】->【Lifecycle】

​ a. 先双击【clean】查看控制台(Run)是否出现BUILD SUCCESS

​ b. 然后双击【package】查看控制台(Run)是否出现BUILD SUCCESS

​ c. 在IDEA左边查看【Project】界面会出现【target】文件夹,打开文件夹会出现xxx.jar包说明已经构建完成。

​ d. 打开xxx.jar文件,在【META-INF/MANIFEST.MF】文件里面存在Main-Class: demo.LoadDataMR

打xxx-jar-with-dependencies.jar包

1. 修改pom.xml文件

<plugin>
    <artifactId>maven-assembly-pluginartifactId>
    <configuration>
        <archive>
            <manifest>
                <mainClass>demo.LoadDataMRmainClass>
            manifest>
        archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependenciesdescriptorRef>
        descriptorRefs>
    configuration>
    
    <executions>
        <execution>
            <id>make-assembleid>
            <phase>packagephase>
            <goals>
                <goal>singlegoal>
            goals>
        execution>
    executions>
plugin>

2.使用Maven工具打包

​ 找到IDEA右边的【Maven Projects】->【项目名称】->【Lifecycle】

​ a. 先双击【clean】查看控制台(Run)是否出现BUILD SUCCESS

​ b. 然后双击【package】查看控制台(Run)是否出现BUILD SUCCESS

​ c. 在IDEA左边查看【Project】界面会出现【target】文件夹,打开文件夹会出现xxx.jar包说明已经构建完成。

​ d. 打开xxx-jar-with-dependencies.jar文件,在【META-INF/MANIFEST.MF】文件里面存在Main-Class: demo.LoadDataMR

写在后面

​ Maven插件配置的信息只能针对其生成的文件,在maven-jar-plugin插件设置的信息只会出现在xxx.jar包中,在maven-assembly-plugin插件设置的信息只会出现在xxx-jar-with-dependencies.jar包中

你可能感兴趣的:(Maven,IDEA,Maven,IDEA)