Maven打包没有指定主类问题怎么解决

其他教程   发布日期:2025年01月18日   浏览次数:204

本文小编为大家详细介绍“Maven打包没有指定主类问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Maven打包没有指定主类问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    Maven打包没有指定主类

    在使用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

    1. <plugin>
    2. <groupId>org.apache.maven.plugins</groupId>
    3. <artifactId>maven-jar-plugin</artifactId>
    4. <version>3.1.0</version>
    5. <configuration>
    6. <archive>
    7. <manifest>
    8. <mainClass>demo.LoadDataMR</mainClass>
    9. </manifest>
    10. </archive>
    11. </configuration>
    12. </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文件

    1. <plugin>
    2. <artifactId>maven-assembly-plugin</artifactId>
    3. <configuration>
    4. <archive>
    5. <manifest>
    6. <mainClass>demo.LoadDataMR</mainClass>
    7. </manifest>
    8. </archive>
    9. <descriptorRefs>
    10. <descriptorRef>jar-with-dependencies</descriptorRef>
    11. </descriptorRefs>
    12. </configuration>
    13. <!--下面是为了使用 mvn package命令,如果不加则使用mvn assembly-->
    14. <executions>
    15. <execution>
    16. <id>make-assemble</id>
    17. <phase>package</phase>
    18. <goals>
    19. <goal>single</goal>
    20. </goals>
    21. </execution>
    22. </executions>
    23. </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打包中没有主类启动的情况

    第一步:在pom文件中添加

    1. <!--解决maven打包问题-->
    2. <plugin>
    3. <groupId>org.apache.maven.plugins</groupId>
    4. <artifactId>maven-shade-plugin</artifactId>
    5. <version>2.3</version>
    6. <executions>
    7. <execution>
    8. <phase>package</phase>
    9. <goals>
    10. <goal>shade</goal>
    11. </goals>
    12. <configuration>
    13. <transformers>
    14. <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
    15. <manifestEntries>
    16. <Main-Class>
    17. com.xxx.XXApplication
    18. </Main-Class>
    19. </manifestEntries>
    20. </transformer>
    21. <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
    22. <resource>META-INF/spring.handlers</resource>
    23. </transformer>
    24. <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
    25. <resource>META-INF/spring.schemas</resource>
    26. </transformer>
    27. </transformers>
    28. </configuration>
    29. </execution>
    30. </executions>
    31. </plugin>

    第二步 mvn:clean

    第三步 mvn:package

    以上就是Maven打包没有指定主类问题怎么解决的详细内容,更多关于Maven打包没有指定主类问题怎么解决的资料请关注九品源码其它相关文章!