JWeb 简单的方式部署静态资源

JWeb 是一个基于Spring Boot的简单服务。提供Shell脚本,以简单的方式部署以及运行静态资源

某天晚上睡不着,充电。突然脑抽了一下,node能做到命令行快速的运行静态资源,例如docsify-cli,能通过docsify serve your-static-dir直接部署静态资源,于是我想的是,相似的功能,java也能实现的把

直接部署静态资源,在开发过程中是很有必要的,例如测试跨域问题,您必须另外起个服务。如果是下载web服务器,并将资源拖拽过去的方式,就有点麻烦咯

Java服务

java随着spring boot的出现,开发变得越来越简单,而spring boot正好提供了命令行的方式运行web服务。通过翻阅相关的文档,也发现spring boot中配置文件可以设置本地路径,例如file:/mnt/c/111/设置为c盘111文件夹(win10 bash)。所以java服务是基于spring boot的简单的服务

创建项目

您可以在Spring官网上下载基本的骨架,当然也可以通过idea等工具下载。一般来说添加以下依赖就够了,但如果您还有其他需求,例如和spring cloud配合,请引入相关的依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

添加路由

由于spring boot默认需要index.html才能访问静态资源首页,这是我们不希望的,添加一个路径,将/跳转至index.html。如下修改JwebApplication.class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Controller
@SpringBootApplication
public class JwebApplication {

public static void main(String[] args) {
SpringApplication.run(JwebApplication.class, args);
}

@RequestMapping("/")
public String index(){
return "index.html";
}

}

至此,已经完成了java服务的创建,您可以使用命令行java -jar xxx.jar --spring.resources.static-locations=file:your-static-dir来部署您的静态资源了,但,这命令行是不是太长了…

Shell脚本

shell脚本的目的是为了简化命令行而编写的,提供类似docsify-cli一样的命令

目前的脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/sh

# export PATH=$PATH:your_dir
# Example: export PATH=$PATH:/mnt/c/Users/MrTT/IdeaProjects/jweb/scripts

# 需要openJDK
if ! hash java 2>/dev/null; then
echo "I require java but it's not installed. Please install openJDK.";
exit 1;
fi

# 获取脚本路径
script_path=`dirname $0`

# 修复环境
if [ ! -e ${script_path}"/jweb.jar" ]; then
echo "Downloading jar ...";
wget -O jweb.jar "https://gitlab.com/jiangtj/jweb/-/jobs/artifacts/release/raw/target/jweb.jar?job=build-release"
mv jweb.jar ${script_path}
fi

# java_command
java_command="java -jar "${script_path}"/jweb.jar"

while getopts "c:p:w:" opt; do
case ${opt} in
c)
config_dir=`readlink -f $OPTARG`
java_command=${java_command}" --spring.config.additional-location=file:"${config_dir}
;;
p)
java_command=${java_command}" --server.port="$OPTARG
;;
w)
static_dir=`readlink -f $OPTARG`
java_command=${java_command}" --spring.resources.static-locations=file:"${static_dir}
;;
\?)
echo "Please read docs !"
;;
esac
done

# 运行
echo ${java_command}
${java_command}

实现几个功能点:

  1. 判断是否存在java环境
  2. 自动下载基本的java服务(如果不存在的话)
  3. 获取参数,拼接java命令,并执行

如果,将该shell脚本加载在path路径中,那么可以在任意位置通过命令行jweb.sh -w your-static-dir来部署静态资源

项目

目前项目处在初步的设计阶段,后续会添加更多的参数,以及对java服务更多定制,以满足更多的情况

JWeb·GitLab
JWeb·GitHub镜像
JWeb·Docs