Maven插件—01、基础本地打包、web服务打包篇(含源码)

起始-导航

maven-assembly-plugin插件的使用方法

Maven三个插件打包:

1.maven-jar-plugin,默认的打包插件,用来打普通的project JAR包;
2.maven-shade-plugin,用来打可执行JAR包,也就是所谓的fat JAR包;
3.maven-assembly-plugin,支持自定义的打包结构,也可以定制依赖项等。

标准的顶层模块编译打包+源码

一般顶层的pom模块可以进行使用:

image-20260219100352852

<build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.1</version>
              <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
                  <compilerVersion>1.8</compilerVersion>
                  <compilerArgument>-XDignore.symbol.file</compilerArgument>
              </configuration>
          </plugin>

          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-source-plugin</artifactId>
              <version>3.2.1</version>
              <executions>
                  <execution>
                      <id>attach-sources</id>
                      <goals>
                          <goal>jar</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
      </plugins>
  </build>

打包后为:

image-20260219110553264


打包一个普通带有依赖的maven项目

方式一:使用maven-assembly-plugin

<build>
    <plugins>
        <!-- any other plugins -->
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.5.5</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!--   附带依赖打包     -->
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <!--   指定启动类    -->
                <archive>
                    <manifest>
                        <mainClass>com.changlu.UpFTPClient</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

image-20211030232901780


方式二:使用maven-shade-plugin

区别

特性 maven-shade-plugin maven-assembly-plugin
默认行为 可以替换原 JAR 生成单独的 JAR
配置参数 shadedArtifactAttached=false 总是生成新文件
输出文件 一个 JAR 两个 JAR(原 + with-dependencies)

因为用了 shade 且配置了 shadedArtifactAttached=false,所以你只看到一个 JAR 文件,但它已经包含了所有第三方依赖。

案例2:SpringBoot+Thymeleaf打包项目

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<packaging>jar</packaging>

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <executable>true</executable> <!-- 可选,用于生成可执行的jar -->
        </configuration>
        <executions>
            <execution>
                <id>repackage</id>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>

image-20240630183453589

评论区请在客户端页面查看