maven打包的时候将依赖的jar包也打进去

在Maven中,将依赖的jar包一起打包到生成的jar文件中,可以通过以下几种方法实现:

方法一:使用maven-assembly-plugin

  1. 在项目的pom.xml文件中添加maven-assembly-plugin插件配置:
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.example.MainClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    ```

这里`<mainClass>`标签需要指定你的项目的主类<b class="card40_249__sup_a7f6" data-sup="sup">7</b>。

### 方法二:使用maven-shade-plugin<b class="card40_249__sup_a7f6" data-sup="sup">6</b>

1. 在项目的`pom.xml`文件中添加`maven-shade-plugin`插件配置<b class="card40_249__sup_a7f6" data-sup="sup">2</b>:

```xml
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.example.MainClass</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    ```

同样,`<mainClass>`标签需要指定你的项目的主类<b class="card40_249__sup_a7f6" data-sup="sup">7</b>。

### 方法三:将依赖包复制到项目的lib目录<b class="card40_249__sup_a7f6" data-sup="sup">3</b>

1. 在项目目录下创建一个`lib`文件夹,并将依赖的jar包复制到该文件夹中<b class="card40_249__sup_a7f6" data-sup="sup">8</b>。

2. 在`pom.xml`中配置`maven-dependency-plugin`插件,将`lib`目录下的所有jar包复制到`target`目录下<b class="card40_249__sup_a7f6" data-sup="sup">5</b>:

```xml
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.2</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    ```

### 方法四:使用Maven Assembly插件的`<descriptorRefs>`<b class="card40_249__sup_a7f6" data-sup="sup">5</b>

1. 在`pom.xml`中添加`maven-assembly-plugin`插件配置,并使用`<descriptorRefs>`来定义包含依赖的jar包<b class="card40_249__sup_a7f6" data-sup="sup">1</b>:

```xml
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.example.MainClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    ```

### 总结

以上方法<b class="card40_249__sup_a7f6" data-sup="sup">8</b>
Top