在使用Maven管理项目时, 使用maven打成jar包运行, 默认情况下是不包含依赖jar包的
将jar包采用不解压jar包的方式,打入进一个jar包内,以下主要是 pom文件的配置:
但是这种方式还是不能像springboot那样 用一个单独的jar 包, 并执行
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<descriptors>
<!--<descriptor>src/assembly/assembly-fat-jar.xml</descriptor>-->
<descriptor>src/assembly/assembly-conf.xml</descriptor> <!-- 依赖的额外配置文件 将依赖包打入单一的jar,并且依赖包不解压, -->
</descriptors>
<archive>
<manifest>
<mainClass>com.example.demo</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>./libs</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
src/assembly/assembly-conf.xml
<assembly>
<id>with-dependence</id><!-- 配置文件的标识,同时生成的jar包名字会把这个文本包含进去 -->
<formats>
<format>jar</format><!-- 打包类型,此处为jar -->
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<unpack>false</unpack> <!-- 是否解压 -->
<outputDirectory>libs</outputDirectory> <!-- 将依赖jar包放入libs文件夹,不写默认是jar包根目录 -->
<useTransitiveFiltering>true</useTransitiveFiltering>
<useStrictFiltering>true</useStrictFiltering>
<fileMode>666</fileMode>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
<outputDirectory>./</outputDirectory> <!-- 自己编写的运行main.class文件 放置的路径信息 应该放到根目录下 -->
</fileSet>
</fileSets>
</assembly>
第二种方式
是将依赖的jar包放到 一个单独的文件夹
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.example.demo</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>./libs</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/libs</outputDirectory> <!-- 放到target 下的libs 目录 -->
</configuration>
</execution>
</executions>
</plugin>