在Maven中,将依赖的jar包一起打包到生成的jar文件中,可以通过以下几种方法实现:
方法一:使用maven-assembly-plugin
- 在项目的
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>