Maven的三种打包方式

作者:十万个为什么2024.01.17 15:29浏览量:11

简介:Maven是一个流行的Java项目构建和管理工具,提供了多种打包方式以满足不同的需求。本文将介绍Maven的三种打包方式:使用maven-jar-plugin和maven-dependency-plugin插件打包、使用maven-assembly-plugin插件打包和使用maven-shade-plugin插件打包。

Maven是一个强大的Java项目管理和构建工具,它提供了多种打包方式以满足不同的需求。以下是Maven的三种主要打包方式:

  1. 使用maven-jar-plugin和maven-dependency-plugin插件打包
    这是Maven中最常用的打包方式之一。通过在pom.xml文件中配置maven-jar-plugin和maven-dependency-plugin插件,可以将项目打包成JAR文件。在配置中,需要指定Main-Class属性,以确定程序的入口点。此外,还需要配置Classpath,以确保程序能够找到所需的依赖包。
    在pom.xml文件中添加以下配置:
    1. <build>
    2. <plugins>
    3. <plugin>
    4. <groupId>org.apache.maven.plugins</groupId>
    5. <artifactId>maven-jar-plugin</artifactId>
    6. <version>3.1.0</version>
    7. <configuration>
    8. <archive>
    9. <manifest>
    10. <addClasspath>true</addClasspath>
    11. <classpathPrefix>lib/</classpathPrefix>
    12. <mainClass>com.example.Main</mainClass>
    13. </manifest>
    14. </archive>
    15. </configuration>
    16. </plugin>
    17. <plugin>
    18. <groupId>org.apache.maven.plugins</groupId>
    19. <artifactId>maven-dependency-plugin</artifactId>
    20. <version>3.1.2</version>
    21. <executions>
    22. <execution>
    23. <id>copy-dependencies</id>
    24. <phase>package</phase>
    25. <goals>
    26. <goal>copy-dependencies</goal>
    27. </goals>
    28. <configuration>
    29. <outputDirectory>${project.build.directory}/lib</outputDirectory>
    30. </configuration>
    31. </execution>
    32. </executions>
    33. </plugin>
    34. </plugins>
    35. </build>
    在上面的配置中,maven-jar-plugin插件用于创建JAR文件,而maven-dependency-plugin插件用于复制项目依赖包到指定的目录中。通过运行mvn package命令,Maven将编译源代码并打包成JAR文件。如果一切顺利,最终将生成一个带有Main-Class属性的JAR文件,可以直接通过java -jar命令运行。
  2. 使用maven-assembly-plugin插件打包
    使用maven-assembly-plugin插件可以创建包含项目依赖项和应用程序本身的完整分发包。这种打包方式适用于需要将所有文件打包到一个单独的可执行文件中的项目。在pom.xml文件中添加以下配置:
    1. <build>
    2. <plugins>
    3. <plugin>
    4. <groupId>org.apache.maven.plugins</groupId>
    5. <artifactId>maven-assembly-plugin</artifactId>
    6. <version>3.1.0</version>
    7. <configuration>
    8. <archive>
    9. <manifest>
    10. <mainClass>com.example.Main</mainClass>
    11. </manifest>
    12. </archive>
    13. <descriptorRefs>
    14. <descriptorRef>jar-with-dependencies</descriptorRef>
    15. </descriptorRefs>
    16. </configuration>
    17. <executions>
    18. <execution>
    19. <id>make-assembly</id>
    20. <phase>package</phase>
    21. <goals>
    22. <goal>single</goal>
    23. </goals>
    24. </execution>
    25. </executions>
    26. </plugin>
    27. </plugins>
    28. </build>