Mavne官方文件解读build
POM中两个build元素之间的基本元素集。
install
${basedir}/target
${artifactId}-${version}
filters/filter1.properties
...
----------------------------------------
defaultGoal:默认目标或者阶段
directory:项目构建后的目标路径。
finalName:项目的名称,版本信息
filters:过滤文件
filter:
...
META-INF/plexus
false
${basedir}/src/main/plexus
configuration.xml
**/*.properties
...
...
-------------------------------------------------
Resources:资源元素的列表,每个元素都描述了与此项目相关联的文件的内容和位置。
targetPath:指定用于放置打包后的目录结构。目标路径默认为基目录。打包在JAR中的资源的通常的目标路径是META-INF。
directory:定义了要在哪里找到资源,构建的默认目录。
filtering:是否开启过滤
includes:将directory下中指定文件资源打包放入targetPath中。
excludes:忽略directory中的文件资源,不进行打包。
npm run build
1、进入Edit Configurations
2、打包命令配置
包括命令选择,名称,依赖的package.json,脚步命令Scripts
将vue项目打包好的dist放入SpringBoot项目中的resources/static目录下。
参考: https://www.jianshu.com/p/c5c1503f5367
WebMvcConfigurationSupport 在整个应用程序中只会生效一个,如果用户已经实现了 WebMvcConfigurationSupport,则 DelegatingWebMvcConfiguration 将不会生效,换句话来说,WebMvcConfigurer 的所有实现类将不会生效。
而在Spring 中,如果类路径上不存在 WebMvcConfigurationSupport 的实例,则将会默认实现
WebMvcConfigurerAdapter、DelegatingWebMvcConfiguration 来自定义mvc 配置
下面这段代码的作用是:配置addResourceHandler和addResourceLocations,使得可从磁盘中读取图片,视频,音频等。将资源的名称解析成指定路径。
例如:/static/seat/1.png ----> /seat/1.png
public class ResourcesConfig extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("/jportal-jsccbsite/**").addResourceLocations("classpath:/jportal-jsccbsite/");
registry.addResourceHandler("/seat/**").addResourceLocations("classpath:/static/seat/");
registry.addResourceHandler("/stranded/**").addResourceLocations("classpath:/static/stranded/");
}
}
static下的 静态资源都会被spring security拦截,所以需要到配置一些拦截,或者不需要拦截的资源,路径。
addPathPatterns: 指定拦击的路径
excludePathPatterns:忽略拦击,配置的路径不进行拦截
${interceptor.login.exclude.pathPatterns}:配置文件中配置的忽略拦截的路径。
@Configuration
public class JSCCWebConfig extends ResourcesConfig{
@Value("${jurisdiction.openLogin}")
private boolean isOpenInterceptor;
@Value("${interceptor.login.exclude.pathPatterns}")
private String[] loginExcludePathPatterns;
/**
* 注册 拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
InterceptorRegistration loginInterceptor = registry.addInterceptor(new JSCCHandlerInterceptor(isOpenInterceptor));
loginInterceptor.excludePathPatterns(loginExcludePathPatterns);
loginInterceptor.addPathPatterns("/jscc/**");
/*loginInterceptor.addPathPatterns("/static/**");*/
loginInterceptor.addPathPatterns("/park/**");
}
}
为什么springboot项目可以达成jar包,主要是有一下依赖
maven-compiler-plugin
1.8
spring-boot中五个功能:
build-info:生成项目的构建信息文件 build-info.properties
repackage:这个是默认 goal,在 mvn package 执行之后,这个命令再次打包生成可执行的 jar,同时将 mvn package 生成的 jar 重命名为 *.origin
run:这个可以用来运行 Spring Boot 应用
start:这个在 mvn integration-test 阶段,进行 Spring Boot 应用生命周期的管理
stop:这个在 mvn integration-test 阶段,进行 Spring Boot 应用生命周期的管理
双击package打包
如果下图:生成jar包
先打包我们的可执行jar,我们的代码在boot-inf/classes目录下,
还有一个 META-INF 的目录,该目录下有一个 MANIFEST.MF 文件,打开该文件,内容如下:
打卡MaNIFEST.MF文件, 可以看到,这里定义了一个 Start-Class,这就是可执行 jar 的入口类。
Spring-Boot-Classes 表示我们自己代码编译后的位置,Spring-Boot-Lib 则表示项目依赖的 jar 的位置。
换句话说,如果自己要打一个可执行 jar 包的话,除了添加相关依赖之外,还需要配置 META-INF/MANIFEST.MF 文件。
将打好的jar包部署到linux服务器上。
运行命令, nohup表示当终端窗口关闭时,不要把spring boot项目停掉,还是要继续运行,&表示在后台运行
nohup java -jar xxx.jar &
可以借助这些知识去读懂,编写项目打包脚本。
java -verbose : 查看java安装路径
echo命令:命令回显。
脚本:echo tesxt
显示:echo text
test
---------------------------------
@echo : 关闭命令回显 @echo
脚本:@echo text
显示:text
---------------------------------
echo off :关闭其后所有命令的回显,不包括本身
脚本:echo off
echo hello
显示:echo off
hello
---------------------------------
@的作用是关闭紧跟其后的一条命令的回显。
脚本:@echo off
@echo hello
echo hello
显示:
hello
hello
结果分析:@ehco off,所有echo off 关闭所有命令回显,不包括本身,但@关闭自身命令回显,echo off 为命令,所以不答应。
@echo hello ,应为命令回显被关闭了,所有打印hello。
echo hello ,同理打印hello。
pause也是一条命令,作用就是使程序暂停,也就是输出“请按任意键继续…”的原因。
::是批处理文件中一种注释语句的方式
格式: set 变量名 = 变量值
例如:set runpath = %CD%
预定义变量
下面是些已经被底层定义好可以直接使用的变量:不会出现在 SET 显示的变量列表中
%CD% - 扩展到当前目录字符串。
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。
%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。
%0 bat的完整路径名如"C:\Windows\system32\xxx.bat"
%1 bat参数1依次类推%2参数2…
%path% - 当前的环境变量。以分号隔开的路径列表,路径可包含空格,可以以’'结尾, 可以以双引号包围之。 ****
案例:
@echo off
echo update code
set runpath=%cd%
echo %CD%
echo %Date%
echo %TIME%
echo %RANDOM%
echo %ERRORLEVEL%
echo %CMDEXTVERSION%
echo %CMDCMDLINE%
echo %0%
echo %1%
echo %path%
对应输出结果:
简单来说就是,在批处理命令中, call命令用来从一个批处理脚本中调用另一个批处理脚本 ,还是用上面echo来举例。
1、新建一个文件命名为hello,后缀为.bat,内容如下
echo hello
2、新建一个文件名为world, 后缀同为.bat,内容如下
@echo off
call hello.bat
echo world
@echo end
pause
对应输出
hello
world
end
请输入任意键继续…
复制,这里就没啥好说的了,注意相对路径问题。
copy .\dist ..\..\jscc-cloud-seat\src\main\resources\static\seat\dist