本文主要汇总,笔者在打包时,遇到的坑。
由于通过IDE打包为war以及jar基本没有问题,因此未作记录。
clean:清除前一次操作的遗留数据。笔者感觉,类似通过IDE打包方式的Export 的 jar File 前,需要clean项目一样,避免奇奇怪怪的错误。
install:主要是下载构建至本地厂库,避免打包过程中缺少东西。即,本地的jar安装到maven仓库。
package:打包。
插件笔者选择的是常用的打包插件,执行条件默认是随着Maven package的过程触发 repackage。
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
可以通过解压缩文件,查看打包后的jar包,检查文件是否在其中。
打包时,需要手动添加所有的需要的资源。
如下图的例子
...
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<!---路径在src/main/java 下的--->
<includes>
<!---所有以*.xml为后缀的文件--->
<!---src/main/java/任意文件/*.xml --->
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.Properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
...
</build>
常见的比如:
mybatis-plus路径可以写为是(此处不是yam的写法):
mybatis-plus.mapper-locations:classpath:com/note/mapper/xml/*.xml
但打包后找不到,只能写为:
mybatis-plus.mapper-locations:com/note/mapper/xml/*.xml
或者
mybatis-plus.mapper-locations:classpath*:com/note/mapper/xml/*.xml
又或者,找不到Springboot配置文件,需要手动添加路径,或者一些写在项目中的.xml,需要手动添加扫描文件等问题
@SpringBootApplication
@MapperScan("com.XXX.mapper")
@EnableTransactionManagement
@PropertySource({"classpath:application.Properties"})
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}
此处以本地导入达梦数据库的JDBC为例
1.需要在resources下创建一个lib文件夹,用于装载所有的包
2.导入本地包的位置
...
<dependencies>
...
<dependency>
<groupId>com.dameng</groupId>
<artifactId>dm-jdbc</artifactId>
<version>1.8</version>
<!---这里是一些关于依赖的信息--->
<scope>system</scope>
<!---范围必须是系统---> <<systemPath>${project.basedir}/src/main/resources/lib/DmJdbcDriver18.jar</systemPath>
<!---该处则是本地包的路径--->
<!---${project.basedir}是参数,不用更改,如果报错可以忽略--->
</dependency>
<dependency>
</dependencies>
3.还需要启用这个范围,否则打包后的jar包,依然无法导入该依赖
...
<build>
...
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
<!------>
</plugin>
</plugins>
</build>