打成一个可执行的jar
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.9.RELEASE</version>
<configuration>
<!--主启动类的位置-->
<mainClass>com.cyz.Main</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
使用的时候只需要替换启动类就行了
如果要指定配置文件执行,只需要执行如下命令,application.yml是相对当前目录的位置
java -jar bigdata-1.0-SNAPSHOT.jar --spring.config.location=application.yml
单独打包resource和lib
只需要在pom.xml中加上如下配置即可
<build>
<plugins>
<!-- 指定启动类,将java包下面的class打包为jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<!-- 生成的jar中,不要包含pom.xml和pom.properties这两个文件 -->
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<!-- 是否要把第三方jar加入到类构建路径 -->
<addClasspath>true</addClasspath>
<!-- 外部依赖jar包的最终位置 -->
<classpathPrefix>lib/</classpathPrefix>
<!-- 项目启动类 -->
<mainClass>com.cyz.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!--拷贝依赖到jar外面的lib目录-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-lib</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>target/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>compile</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<!--指定配置文件 将resources/ 作为classpath-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<!-- 指定配置文件目录,这样jar运行时会去找到同目录下的resources文件夹下查找 -->
<manifestEntries>
<Class-Path>resources/</Class-Path>
</manifestEntries>
</archive>
<!-- 打包时忽略的文件(也就是不打进jar包里的文件) -->
<excludes>
<!--排除resources下面所有文件-->
<exclude>*.*</exclude>
<exclude>mapper/**</exclude>
<exclude>static/**</exclude>
<exclude>templates/**</exclude>
</excludes>
</configuration>
</plugin>
<!-- 拷贝resources文件夹到target下面的resources目录下-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- 资源文件输出目录 -->
<outputDirectory>${project.build.directory}/resources</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
把手动引入的jar打包
打成一个可执行的jar
手动添加如下jar
在pom中添加
<dependency>
<groupId>sdk</groupId>
<artifactId>dop-api-sdk</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/lib/dop-api-sdk-1.0.jar</systemPath>
</dependency>
groupId 和 artifactId和 version随便写
在build中添加如下内容
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
<directory>src/lib</directory>这边地址根据具体情况来
执行打包命令,查看jar中的lib
再看看这样为啥可以成功
所以只有位置放对了就行
单独打包resources和lib
<dependency>
<groupId>sdk</groupId>
<artifactId>dop-api-sdk</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/lib/dop-api-sdk-1.0.jar</systemPath>
</dependency>
然后打包
发现没有自己刚刚引入的包
方法一 手动修改MANIFEST.MF文件
运行即可
方法二 修改pom文件(推荐)
我发现原来的MANIFEST.MF文件中第一行有个resources/
再看pom文件中
那我要是在resources/ 后面加上我要的classpath不就行了吗 于是这样做
重新打包,打开 MANIFEST.MF如下
运行,发现没问题
如果要增加多个,只需要在后面加上即可