1.项目通过maven引入的jar多了之后,用maven打出的jar会非常庞大,我的是因为引入了ffmpeg的相关jar,所以,每次上传服务更新都要传输好久,修改maven打包方式,改为源码和lib分离模式
2.maven的pom.xml配置如下
xml
<build>
<plugins>
<!-- Step 1: 只打包源码(不包含依赖) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.xxx.springboot.xxxxxApplication</mainClass> <!-- 替换为你自己的主类 -->
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<!-- 不上maven管理的jar引入方式 -->
<Class-Path>lib/DmJdbcDriver18-1.0.jar lib/encrypt-body-spring-boot-starter-1.2.3.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!-- Step 2: 使用 spring-boot-maven-plugin 打包并提取依赖到 lib/ -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<skip>true</skip> <!-- 禁用默认 repackage -->
</configuration>
</execution>
<execution>
<id>build-info</id>
<goals>
<goal>build-info</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Step 3: 提取依赖到 target/lib/ -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<!-- Step 4 (可选): 创建最终发布的 dist 文件夹 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<mkdir dir="${project.build.directory}/dist"/>
<copy file="${project.build.directory}/${project.build.finalName}.jar"
tofile="${project.build.directory}/dist/chenzhou.jar"/>
<copy todir="${project.build.directory}/dist/lib">
<fileset dir="${project.build.directory}/lib"/>
</copy>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
3.对于非maven仓库中的包处理方式
xml
<!-- 非maven仓库包 -->
<dependency>
<groupId>com-dm</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/DmJdbcDriver18.jar</systemPath>
</dependency>
<!-- 指定jar位置,多个以空格分开,对于不上版本结尾的名称,打包放入lib后会自动增加1.0,所以,引入jar写入也要增加
例如:达梦数据库驱动包,项目实际引入DmJdbcDriver18.jar
在Class-Path中的配置要为:DmJdbcDriver18-1.0.jar
-->
<manifestEntries>
<Class-Path>lib/DmDialect-for-hibernate6.1-1.0.jar lib/DmJdbcDriver18-1.0.jar</Class-Path>
</manifestEntries>
如有不妥之处,请谅解!