Maven打包时指定启动类

朱雀 2022-04-25 10:26 1225阅读 0赞

使用Maven打包的时候, 有时候需要指定启动类, 可如下操作!

测试项目(结构如下):

20190531144015145.png

代码: com.xxx.MainClass.java


  1. package com.xxx;
  2. public class MainClass {
  3. public static void main(String[] args) {
  4. System.out.println("The project is to use maven to package a Jar with mainclass !");
  5. }
  6. }

打包的时候指定启动类为 com.xxx.MainClass

方法一:

pom.xml


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.xxx</groupId>
  7. <artifactId>maven-packaging</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <build>
  10. <!-- 打包后的名字 -->
  11. <finalName>MainClass</finalName>
  12. <plugins>
  13. <!-- 配置jdk版本为1.8 -->
  14. <plugin>
  15. <groupId>org.apache.maven.plugins</groupId>
  16. <artifactId>maven-compiler-plugin</artifactId>
  17. <configuration>
  18. <target>1.8</target>
  19. <source>1.8</source>
  20. </configuration>
  21. </plugin>
  22. <!-- 配置启动类 -->
  23. <plugin>
  24. <groupId>org.apache.maven.plugins</groupId>
  25. <artifactId>maven-shade-plugin</artifactId>
  26. <version>3.2.1</version>
  27. <executions>
  28. <execution>
  29. <phase>package</phase>
  30. <goals>
  31. <goal>shade</goal>
  32. </goals>
  33. <configuration>
  34. <transformers>
  35. <transformer
  36. implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
  37. <mainClass>com.xxx.MainClass</mainClass>
  38. </transformer>
  39. </transformers>
  40. </configuration>
  41. </execution>
  42. </executions>
  43. </plugin>
  44. </plugins>
  45. </build>
  46. </project>

执行 mvn clean package , 在target包下找到MainClass.jar文件

可直接使用命令 java -jar MainClass.jar 执行

20190531144401818.png

方法二:

pom.xml


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.xxx</groupId>
  7. <artifactId>maven-packaging</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <build>
  10. <!-- 打包后的名字 -->
  11. <finalName>MainClass</finalName>
  12. <plugins>
  13. <!-- 配置jdk版本为1.8 -->
  14. <plugin>
  15. <groupId>org.apache.maven.plugins</groupId>
  16. <artifactId>maven-compiler-plugin</artifactId>
  17. <configuration>
  18. <target>1.8</target>
  19. <source>1.8</source>
  20. </configuration>
  21. </plugin>
  22. </plugins>
  23. <!-- 配置启动类 -->
  24. <pluginManagement>
  25. <plugins>
  26. <plugin>
  27. <groupId>org.apache.maven.plugins</groupId>
  28. <artifactId>maven-jar-plugin</artifactId>
  29. <configuration>
  30. <archive>
  31. <manifest>
  32. <mainClass>com.xxx.MainClass</mainClass>
  33. <addClasspath>true</addClasspath>
  34. <classpathPrefix>lib/</classpathPrefix>
  35. </manifest>
  36. </archive>
  37. <classesDirectory>
  38. </classesDirectory>
  39. </configuration>
  40. </plugin>
  41. </plugins>
  42. </pluginManagement>
  43. </build>
  44. </project>

执行 mvn clean package , 在target包下找到MainClass.jar文件

可直接使用命令 java -jar MainClass.jar 执行

20190531144713395.png

两种配置效果时一样的 !!!!!

发表评论

表情:
评论列表 (有 0 条评论,1225人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Jenkins指定maven打包命令

    场景简介: 很多时候我们开发项目需要不止一个环境,通常环境分为 dev sit uat prod 职能不同,配置文件也不尽相同,通过maven自带的打包命令方式,增加外置参

    相关 maven打包的jar指定启动

    简述        项目开发中,很多情况下我们会打成jar启动,此时如果jar中出现多个含有main的类,启动一般会报错,此时可以通过在pom中指定启动类来解决这个问题。