新增一个极小的内核web服务,1秒启动项目。

This commit is contained in:
thinkgem
2023-09-21 15:30:19 +08:00
parent 81cb9dcbba
commit dff27dc659
30 changed files with 1261 additions and 0 deletions

15
web-mini/README.md Normal file
View File

@@ -0,0 +1,15 @@
## 介绍
jeesite-web-mini 是一个 JeeSite 极小的内核服务1秒启动项目。
一般可用于后台内部数据处理服务,该项目不会初始化界面和权限。
甚至可以不初始化数据源,是一个非常快的小微服务。
## 文档
部署文档http://jeesite.com/docs/install-deploy/
常见问题http://jeesite.com/docs/faq/
更多文档http://jeesite.com/docs

View File

@@ -0,0 +1,19 @@
@echo off
rem /**
rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
rem * No deletion without permission, or be held responsible to law.
rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>Docker<65><72><EFBFBD><EFBFBD>
echo.
%~d0
cd %~dp0
cd ..
call mvn clean package docker:remove docker:build -Dmaven.test.skip=true -U
cd bin
pause

View File

@@ -0,0 +1,16 @@
#!/bin/sh
# /**
# * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程编译Docker镜像。"
echo ""
cd ..
mvn clean package docker:remove docker:build -Dmaven.test.skip=true -U
cd bin

View File

@@ -0,0 +1,21 @@
FROM openjdk:8-slim
LABEL maintainer="ThinkGem@163.com"
ENV TZ "Asia/Shanghai"
ENV LANG C.UTF-8
VOLUME /tmp
VOLUME /data
WORKDIR /app
#RUN mkdir WEB-INF
#ADD jeesite.lic ./WEB-INF
ADD ./maven/web.war ./app.war
#ENV JAVA_OPTS "$JAVA_OPTS -Xms256m -Xmx1024m"
ENV JAVA_OPTS "$JAVA_OPTS -Dspring.profiles.active=prod"
ENTRYPOINT jar -xvf app.war && rm app.war && cd WEB-INF && sh startup.sh
EXPOSE 8980
#docker run -p 8980:8980 thinkgem/jeesite-web:5.3

View File

@@ -0,0 +1,34 @@
@echo off
rem /**
rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
rem * No deletion without permission, or be held responsible to law.
rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ݿ⡣
echo.
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>״ΰ<D7B4>װ JeeSite <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ Module <20><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Ѱ<EFBFBD>װ<EFBFBD><D7B0><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ԡ<EFBFBD>
echo.
echo [<5B><>Ϣ] <20><> v4.2 <20><EFBFBD>Ժ󣬹ٷ<F3A3ACB9><D9B7><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>DZȽϰ<C8BD>ȫ<EFBFBD>ģ<EFBFBD><C4A3>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĽű<C4BD><C5B1><EFBFBD>
echo.
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð汾<C3B0><E6B1BE><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD><EFBFBD><EFBFBD>
echo.
pause
%~d0
cd %~dp0
cd ..
call mvn clean compile -Dmaven.test.skip=true -U
echo.
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD>ʼ<E6BFAA><CABC>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ݿ⡣
echo.
pause
set "MAVEN_OPTS=%MAVEN_OPTS% -Xms512m -Xmx1024m"
call mvn test -Dmaven.test.skip=false -Dtest=com.jeesite.test.InitData
cd bin
pause

35
web-mini/bin/init-data.sh Normal file
View File

@@ -0,0 +1,35 @@
#!/usr/bin/env bash
# /**
# * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 初始化数据库。"
echo ""
echo "[信息] 本操作主要用于首次安装 JeeSite 或后安装 Module 的数据表初始化,若模块已安装会自动忽略。"
echo ""
echo "[信息] 在 v4.2 版本以后,官方初始化数据库是比较安全的,官方代码中不会包含任何删除数据表及数据的脚本。"
echo ""
echo "[信息] 如果你是升级到该版本,不排除你是否升级完整,为安全起见,建议先备份数据库后再操作。"
echo ""
echo "请按回车键继续 ... "
read text
cd ..
mvn clean compile -Dmaven.test.skip=true -U
echo ""
echo "[信息] 依赖下载完成,下面开始初始化数据库。"
echo ""
echo "请按回车键继续 ... "
read text
MAVEN_OPTS="$MAVEN_OPTS -Xms512m -Xmx1024m"
mvn test -Dmaven.test.skip=false -Dtest=com.jeesite.test.InitData
cd bin
echo "请按回车键完成 ... "
read text

22
web-mini/bin/package.bat Normal file
View File

@@ -0,0 +1,22 @@
@echo off
rem /**
rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
rem * No deletion without permission, or be held responsible to law.
rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>war/jar<61><72><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U
cd bin
pause

18
web-mini/bin/package.sh Normal file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
# /**
# * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# */
echo ""
echo "[信息] 打包Web工程生成war/jar包文件。"
echo ""
mvn -v
echo ""
cd ..
mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U
cd bin

View File

@@ -0,0 +1,20 @@
@echo off
rem /**
rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
rem * No deletion without permission, or be held responsible to law.
rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] ʹ<><CAB9> Spring Boot Tomcat <20><><EFBFBD><EFBFBD> Web <20><><EFBFBD>̡<EFBFBD>
echo.
%~d0
cd %~dp0
cd ..
title %cd%
set "MAVEN_OPTS=%MAVEN_OPTS% -Xms512m -Xmx1024m"
call mvn clean spring-boot:run -Dmaven.test.skip=true
pause

View File

@@ -0,0 +1,15 @@
#!/bin/sh
# /**
# * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 使用 Spring Boot Tomcat 运行 Web 工程。"
echo ""
cd ..
MAVEN_OPTS="$MAVEN_OPTS -Xms512m -Xmx1024m"
mvn clean spring-boot:run -Dmaven.test.skip=true

31
web-mini/bin/run-web.bat Normal file
View File

@@ -0,0 +1,31 @@
@echo off
rem /**
rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
rem * No deletion without permission, or be held responsible to law.
rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̡<EFBFBD>
echo.
%~d0
cd %~dp0
rem <20><><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̣<EFBFBD><CCA3><EFBFBD>ʼ<EFBFBD><CABC>
cd ..
call mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U
cd target
rem <20><><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
rem <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD> web.jar Ϊ<><CEAA><EFBFBD><EFBFBD> jar <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mkdir app
copy web.war app
cd app
jar -xvf web.war
del web.war
cd WEB-INF
call startup.bat
pause

27
web-mini/bin/run-web.sh Normal file
View File

@@ -0,0 +1,27 @@
#!/bin/sh
# /**
# * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程并运行Web工程。"
echo ""
# 打包Web工程开始
cd ..
mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U
cd target
# 打包Web工程结束
# 根据情况修改 web.jar 为您的 jar 包名称
mkdir app
cp web.war ./app
cd app
jar -xvf web.war
rm web.war
cd WEB-INF
sh ./startup.sh

132
web-mini/pom.xml Normal file
View File

@@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.5.1.springboot3-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<artifactId>jeesite-web-mini</artifactId>
<packaging>war</packaging>
<description>Web 服务,最小化加载,可以甚至关闭数据源</description>
<name>JeeSite Web</name>
<url>http://jeesite.com</url>
<inceptionYear>2013-Now</inceptionYear>
<properties>
<finalName>web</finalName><!-- war or jar 包的名称 -->
<start-class>com.jeesite.modules.MiniApplication</start-class>
<!-- docker setting -->
<docker.run.port>8980:8980</docker.run.port>
</properties>
<dependencies>
<!-- MySql -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<!-- JeeSite -->
<dependency>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-framework</artifactId>
<version>${project.parent.version}</version>
</dependency>
<!-- Spring Boot Tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency> -->
</dependencies>
<build>
<finalName>${finalName}</finalName>
<!--<outputDirectory>${project.basedir}/src/main/webapp/WEB-INF/classes/</outputDirectory>-->
<plugins>
<!-- Spring Boot -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<!-- war插件war包名称不带版本号 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>${finalName}</warName>
</configuration>
</plugin>
<!-- Eclipse 插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<wtpContextName>${finalName}</wtpContextName>
</configuration>
</plugin>
</plugins>
</build>
<developers>
<developer>
<id>thinkgem</id>
<name>WangZhen</name>
<email>thinkgem at 163.com</email>
<roles><role>Project lead</role></roles>
<timezone>+8</timezone>
</developer>
</developers>
<organization>
<name>JeeSite</name>
<url>http://jeesite.com</url>
</organization>
<repositories>
<repository>
<id>aliyun-repos</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
<repository>
<id>jeesite-repos</id>
<url>https://maven.jeesite.net/repository/maven-public</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>aliyun-repos</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</pluginRepository>
<pluginRepository>
<id>jeesite-repos</id>
<url>https://maven.jeesite.net/repository/maven-public</url>
</pluginRepository>
</pluginRepositories>
</project>

View File

@@ -0,0 +1,42 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* No deletion without permission, or be held responsible to law.
*/
package com.jeesite.modules;
import com.jeesite.common.config.Global;
import com.jeesite.common.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
* Application
* @author ThinkGem
*/
@SpringBootApplication
public class MiniApplication extends SpringBootServletInitializer {
private static Logger logger = LoggerFactory.getLogger(MiniApplication.class);
public static void main(String[] args) {
SpringApplication.run(MiniApplication.class, args);
logger.info(
"\r\n\r\n==============================================================\r\n"
+ "\r\n 启动完成系统监控地址http://127.0.0.1:"
+ Global.getProperty("server.port") + FileUtils.path("/"
+ Global.getProperty("server.servlet.context-path")
+ Global.getAdminPath()) + "state/server/index"
+ "\r\n\r\n==============================================================\r\n");
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
this.setRegisterErrorPageFilter(false); // 错误页面有容器来处理而不是SpringBoot
return builder.sources(MiniApplication.class);
}
}

View File

@@ -0,0 +1,45 @@
# 使用环境配置,只需 JVM 参数里加:-Dspring.profiles.active=prod
#======================================#
#========== Server settings ===========#
#======================================#
server:
port: 8980
servlet:
context-path: /js
#======================================#
#========== Database sttings ==========#
#======================================#
# 数据库连接
jdbc:
# Mysql 数据库配置
type: mysql
driver: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.56.1:3306/jeesite?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai
username: jeesite
password: jeesite
testSql: SELECT 1
# 数据库连接池配置
pool:
# 初始化连接数
init: 1
# 最小连接数
minIdle: 3
# 最大连接数
maxActive: 20
#======================================#
#========== Spring settings ===========#
#======================================#
# 日志配置
logging:
config: classpath:config/logback-spring-prod.xml

View File

@@ -0,0 +1,174 @@
#======================================#
#========== Project settings ==========#
#======================================#
# 产品或项目名称、软件开发公司名称
productName: JeeSite Demo
companyName: ThinkGem
# 产品版本、版权年份
productVersion: V5.5
copyrightYear: 2023
# 是否演示模式
demoMode: false
# 专为分离端提供接口服务
apiMode: false
#======================================#
#========== Server settings ===========#
#======================================#
server:
port: 8980
servlet:
context-path: /js
register-default-servlet: false
# encoding.enabled: true
tomcat:
uri-encoding: UTF-8
# 表单请求数据的最大大小
max-http-form-post-size: 20MB
# # 进程的最大连接数
# max-connections: 8192
# # 连接数满后的排队个数
# accept-count: 100
# # 线程数最大和最小个数
# threads:
# max: 200
# min-spare: 10
# 当 Nginx 为 httpstomcat 为 http 时,设置该选项为 true
schemeHttps: false
#======================================#
#========== Database sttings ==========#
#======================================#
# 数据库连接(默认关闭,如果和 web.core.enabled 同时开启可使用如下功能:
# 配置参数http://127.0.0.1:8980/js/a/sys/config/list
# 模块管理http://127.0.0.1:8980/js/a/sys/module/list
# 字典管理http://127.0.0.1:8980/js/a/sys/dictType/list
jdbc:
# # Mysql 数据库配置
# type: mysql
# driver: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://127.0.0.1:3306/jeesite_v5?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai
# username: root
# password: 123456
# testSql: SELECT 1
# 数据库连接池配置
pool:
# 初始化连接数
init: 1
# 最小连接数
minIdle: 3
# 最大连接数
maxActive: 20
#======================================#
#========== Framework settings ========#
#======================================#
spring:
# 应用程序名称
application:
name: jeesite-web
# 环境名称(注意:不可设置为 test 它是单元测试专用的名称)
profiles:
active: default
# 打印横幅
main:
bannerMode: "off"
# MVC 映射匹配策略
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
# JTA事务
jta:
enabled: false
# 缓存配置
cache:
# 缓存及会话共享(专业版)
isClusterMode: false
# 日志配置
logging:
config: classpath:config/logback-spring.xml
# 管理基础路径
adminPath: /a
# 前端基础路径
frontPath: /f
# 用户权限相关
user:
enabled: false
# 国际化管理
lang:
enabled: false
# 任务调度
job:
enabled: false
# 代码生成
gen:
enabled: false
# 系统监控(默认开启,可关闭)访问地址如下:
# 服务监控http://127.0.0.1:8980/js/a/state/server/index
# 缓存监控http://127.0.0.1:8980/js/a/state/cache/index
state:
enabled: true
# Web 相关
web:
# MVC拦截器访问日志和手机视图
interceptor:
log:
enabled: false
mobile:
enabled: false
# 是否启用核心内置功能的Controller加载
core:
enabled: false
# 在线API文档工具
swagger:
enabled: false
# Mapper文件刷新线程
mybatis:
mapper:
refresh:
enabled: false
# 文件上传
file:
enabled: false
isFileStreamDown: false
# 消息提醒中心
msg:
enabled: false
#======================================#
#========== Project settings ==========#
#======================================#

View File

@@ -0,0 +1,158 @@
#######默认配置(/org/beetl/core/beetl-default.properties
ENGINE=org.beetl.core.engine.FastRuntimeEngine
DELIMITER_PLACEHOLDER_START=${
DELIMITER_PLACEHOLDER_END=}
DELIMITER_PLACEHOLDER_START2="#{
DELIMITER_PLACEHOLDER_END2=}"
DELIMITER_STATEMENT_START=<%
DELIMITER_STATEMENT_END=%>
DELIMITER_STATEMENT_START2=//#
DELIMITER_STATEMENT_END2=
DIRECT_BYTE_OUTPUT = FALSE
HTML_TAG_SUPPORT = true
HTML_TAG_FLAG = #
HTML_TAG_BINDING_ATTRIBUTE = var,export
HTML_TAG_ATTR_CONVERT=com.jeesite.common.beetl.text.BlankAttributeNameConvert
NATIVE_CALL = TRUE
TEMPLATE_CHARSET = UTF-8
ERROR_HANDLER = com.jeesite.common.beetl.handler.LoggerErrorHandler
NATIVE_SECUARTY_MANAGER = org.beetl.core.DefaultNativeSecurityManager
RESOURCE_LOADER = org.beetl.core.resource.ClasspathResourceLoader
MVC_STRICT = FALSE
#导入调用静态方法类
IMPORT_PACKAGE=
##导入JeeSite调用静态方法类自动合并IMPORT_PACKAGE设置
IMPORT_PACKAGE_core=\
com.jeesite.common.config.;\
com.jeesite.common.codec.;\
com.jeesite.common.collect.;\
com.jeesite.common.idgen.;\
com.jeesite.common.lang.;\
com.jeesite.common.mapper.;\
com.jeesite.common.reflect.;\
com.jeesite.common.security.;\
com.jeesite.common.web.http.;\
com.jeesite.modules.sys.utils.;\
com.jeesite.common.entity.;\
com.jeesite.common.service.;\
com.jeesite.common.utils.;\
### 资源配置resource后的属性只限于特定ResourceLoader ####
#classpath 跟路径,与框架集成的时候,此配置会被框架代码覆盖而不能生效
RESOURCE.root = views
#是否检测文件变化
RESOURCE.autoCheck = TRUE
#自定义脚本方法文件位置
RESOURCE.functionRoot = functions
#自定义脚本方法文件的后缀
RESOURCE.functionSuffix = html
#自定义标签文件位置
RESOURCE.tagRoot = htmltags
#自定义标签文件后缀
RESOURCE.tagSuffix = html
#如果采用beetl集成的web应用可以在渲染模板前调用如下类,此类必须实现WebRenderExt接口
WEBAPP_EXT =
#允许html function or Tag 使用特殊的定界符因为function或者tag通常有大量beetl语句
FUNCTION_TAG_LIMITER=
##### 扩展,也可以通过特定框架注册##############
## 内置的方法
FN.date = org.beetl.ext.fn.DateFunction
FN.nvl = org.beetl.ext.fn.NVLFunction
FN.debug = org.beetl.ext.fn.DebugFunction
#兼容以前版本用has代替
FN.exist = org.beetl.ext.fn.CheckExistFunction
FN.has = org.beetl.ext.fn.CheckExistFunction
FN.printf = org.beetl.ext.fn.Printf
FN.decode = org.beetl.ext.fn.DecodeFunction
FN.assert = org.beetl.ext.fn.AssertFunction
FN.print = org.beetl.ext.fn.Print
FN.println = org.beetl.ext.fn.Println
FN.printFile = org.beetl.ext.fn.PrintFile
FN.trunc = org.beetl.ext.fn.TruncFunction
FN.trim = org.beetl.ext.fn.TruncFunction2
#兼容以前版本 empty用isEmpty代替
FN.empty = org.beetl.ext.fn.EmptyFunction
FN.qmark = org.beetl.ext.fn.QuestionMark
FN.isEmpty = org.beetl.ext.fn.EmptyExpressionFunction
FN.isNotEmpty = org.beetl.ext.fn.IsNotEmptyExpressionFunction
FN.parseInt = org.beetl.ext.fn.ParseInt
FN.parseLong = org.beetl.ext.fn.ParseLong
FN.parseDouble= org.beetl.ext.fn.ParseDouble
FN.range = org.beetl.ext.fn.Range
FN.flush = org.beetl.ext.fn.Flush
FN.json = org.beetl.ext.fn.Json
FN.pageCtx = org.beetl.ext.fn.PageContextFunction
FN.type.new=org.beetl.ext.fn.TypeNewFunction
FN.type.name=org.beetl.ext.fn.TypeNameFunction
FN.type.fullName=com.jeesite.common.beetl.ext.fn.TypeFullNameFunction
FN.global=org.beetl.ext.fn.DynamicGlobalValueFunction
FN.allGlobal=org.beetl.ext.fn.AllGlobaAsJsonlFunction
FN.hasAttribute=org.beetl.ext.fn.HasAttributeFunction
FN.env=org.beetl.ext.fn.EnvFunction
FN.parentTag=org.beetl.ext.fn.ParentTagFunction
##JeeSite自定义函数
FN.isBlank = com.jeesite.common.beetl.ext.fn.IsBlank
FN.isNotBlank = com.jeesite.common.beetl.ext.fn.IsNotBlank
FN.toBoolean = com.jeesite.common.beetl.ext.fn.ToBoolean
FN.toInteger = com.jeesite.common.beetl.ext.fn.ToInteger
FN.toJson = com.jeesite.common.beetl.ext.fn.ToJson
FN.fromJson = com.jeesite.common.beetl.ext.fn.FromJson
FN.hasPermi = com.jeesite.common.beetl.ext.fn.HasPermi
FN.hasRole = com.jeesite.common.beetl.ext.fn.HasRole
FN.cookie = com.jeesite.common.beetl.ext.fn.Cookie
FN.lang = com.jeesite.common.beetl.ext.fn.Lang
FN.text = com.jeesite.common.beetl.ext.fn.Text
FN.user = com.jeesite.common.beetl.ext.fn.User
##内置的功能包
FNP.strutil = org.beetl.ext.fn.StringUtil
FNP.reg = org.beetl.ext.fn.RegxFunctionUtil
FNP.array = org.beetl.ext.fn.ArrayUtil
FNP.dict = com.jeesite.common.beetl.ext.fn.DictUtil
##内置的格式化函数
FT.dateFormat = org.beetl.ext.format.DateFormat
FT.numberFormat = com.jeesite.common.beetl.ext.format.NumberFormat
FT.xss = com.jeesite.common.beetl.ext.format.XssFormat
##内置的默认格式化函数
FTC.java.util.Date = org.beetl.ext.format.DateFormat
FTC.java.sql.Date = org.beetl.ext.format.DateFormat
FTC.java.sql.Time = org.beetl.ext.format.DateFormat
FTC.java.sql.Timestamp = org.beetl.ext.format.DateFormat
FTC.java.lang.Short = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.lang.Long = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.lang.Integer = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.lang.Float = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.lang.Double = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.math.BigInteger = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.math.BigDecimal = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.util.concurrent.atomic.AtomicLong = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.util.concurrent.atomic.AtomicInteger = com.jeesite.common.beetl.ext.format.NumberFormat
##虚拟属性 无
## 标签类
TAG.include= org.beetl.ext.tag.IncludeTag
TAG.includeFileTemplate= org.beetl.ext.tag.IncludeTag
TAG.incdlueJSP= org.beetl.ext.jsp.IncludeJSPTag
TAG.layout= org.beetl.ext.tag.LayoutTag
TAG.delete= org.beetl.ext.tag.DeleteTag
#TAG.htmltag= org.beetl.ext.tag.HTMLTagSupportWrapper
#TAG.htmltagvar= org.beetl.ext.tag.HTMLTagVarBindingWrapper
TAG.htmltag= com.jeesite.common.beetl.ext.tag.HTMLTag
TAG.htmltagvar= com.jeesite.common.beetl.ext.tag.HTMLTagVar
TAG.htmltagexport= com.jeesite.common.beetl.ext.tag.HTMLTagVar
TAG.cache= org.beetl.ext.tag.cache.CacheTag
# 一个html风格的include和layout <#html:include file="">
TAG.html.include= org.beetl.ext.tag.html.IncludeResourceHtmlTag
TAG.html.layout= org.beetl.ext.tag.html.LayoutResourceHtmlTag
TAG.html.set= org.beetl.ext.tag.html.SetHtmlTag
TAG.html.if= org.beetl.ext.tag.html.IfHtmlTag
TAG.html.foreach= org.beetl.ext.tag.html.ForeachHtmlTag
#TAG.includeUrl=org.beetl.ext.tag.IncludeUrlTag

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
<!-- Log file path -->
<property name="log.path" value="${logPath:-${java.io.tmpdir:-.}}/logs" />
<!-- Framework level setting -->
<include resource="config/logger-core.xml"/>
<logger name="org.mybatis.spring.transaction" level="INFO" />
<logger name="org.flowable.ui.modeler.domain" level="INFO" />
<logger name="org.flowable.idm.engine.impl.persistence" level="INFO" />
<logger name="org.flowable.task.service.impl.persistence" level="INFO" />
<logger name="org.flowable.identitylink.service.impl.persistence" level="INFO" />
<logger name="org.flowable.variable.service.impl.persistence" level="INFO" />
<logger name="org.flowable.engine.impl.persistence" level="INFO" />
<logger name="com.jeesite" level="INFO" />
<logger name="com.jeesite.common.mybatis.mapper" level="INFO" />
<!-- Project level setting -->
<!-- <logger name="your.package" level="DEBUG" /> -->
<!-- Console log output -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{MM-dd HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx</pattern>
</encoder>
</appender>
<!-- Log file debug output -->
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
</encoder>
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>-->
</appender>
<!-- Log file error output -->
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="WARN">
<appender-ref ref="console" />
<appender-ref ref="debug" />
<appender-ref ref="error" />
</root>
</configuration>

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
<!-- Log file path -->
<property name="log.path" value="${logPath:-${java.io.tmpdir:-.}}/logs" />
<!-- Framework level setting -->
<include resource="config/logger-core.xml"/>
<!-- Project level setting -->
<!-- <logger name="your.package" level="DEBUG" /> -->
<!-- Console log output -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{MM-dd HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx</pattern>
</encoder>
</appender>
<!-- Log file debug output -->
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
</encoder>
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>-->
</appender>
<!-- Log file error output -->
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="WARN">
<appender-ref ref="console" />
<appender-ref ref="debug" />
<appender-ref ref="error" />
</root>
</configuration>

View File

@@ -0,0 +1,59 @@
<included>
<!-- https://github.com/spring-projects/spring-boot/blob/v2.0.5.RELEASE/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<logger name="org.springframework.boot.web.embedded" level="INFO" />
<logger name="net.oschina.j2cache.caffeine.CaffeineProvider" level="ERROR" />
<!-- <logger name="org.apache.ibatis" level="DEBUG" /> -->
<!-- <logger name="org.mybatis.spring" level="DEBUG" /> -->
<!-- <logger name="org.springframework.jdbc" level="DEBUG" /> -->
<logger name="org.mybatis.spring.transaction" level="DEBUG" />
<logger name="com.atomikos.icatch.config.UserTransactionServiceImp" level="ERROR" />
<logger name="com.atomikos.icatch.provider.imp.AssemblerImp" level="ERROR" />
<logger name="com.atomikos.jdbc.AbstractDataSourceBean" level="ERROR" />
<logger name="com.atomikos.jdbc.AtomikosConnectionProxy" level="ERROR" />
<logger name="com.atomikos.recovery.xa.XaResourceRecoveryManager" level="ERROR" />
<logger name="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator" level="DEBUG" />
<!-- <logger name="org.springframework.transaction.support.TransactionSynchronizationManager" level="TRACE" /> -->
<logger name="springfox.documentation.spring.web.readers.parameter.ParameterDataTypeReader" level="ERROR" />
<logger name="springfox.documentation.schema.property.CachingModelPropertiesProvider" level="ERROR" />
<!-- <logger name="io.swagger" level="DEBUG" /> -->
<!-- <logger name="springfox" level="DEBUG" /> -->
<logger name="org.flowable.ui.modeler.domain" level="DEBUG" />
<logger name="org.flowable.idm.engine.impl.persistence" level="DEBUG" />
<logger name="org.flowable.task.service.impl.persistence" level="DEBUG" />
<logger name="org.flowable.identitylink.service.impl.persistence" level="DEBUG" />
<logger name="org.flowable.variable.service.impl.persistence" level="DEBUG" />
<logger name="org.flowable.engine.impl.persistence" level="DEBUG" />
<logger name="com.jeesite" level="DEBUG" />
<logger name="com.jeesite.common.i18n" level="INFO" />
<logger name="com.jeesite.common.shiro" level="INFO" />
<logger name="com.jeesite.common.beetl" level="INFO" />
<logger name="com.jeesite.common.cache" level="INFO" />
<logger name="com.jeesite.common.j2cache" level="INFO" />
<logger name="com.jeesite.common.j2cache.cache.support.caffeine" level="ERROR" />
<logger name="com.jeesite.common.mybatis" level="INFO" />
<logger name="com.jeesite.common.mybatis.mapper" level="DEBUG" />
<logger name="com.jeesite.common.reflect.ReflectUtils" level="INFO" />
<logger name="com.jeesite.common.io.FileUtils" level="INFO" />
<logger name="com.jeesite.modules.sys.dao.LogDao" level="INFO" />
<!-- Production profile
<springProfile name="prod">
<logger name="org.mybatis.spring.transaction" level="INFO" />
<logger name="org.flowable.ui.modeler.domain" level="INFO" />
<logger name="org.flowable.idm.engine.impl.persistence" level="INFO" />
<logger name="org.flowable.task.service.impl.persistence" level="INFO" />
<logger name="org.flowable.identitylink.service.impl.persistence" level="INFO" />
<logger name="org.flowable.variable.service.impl.persistence" level="INFO" />
<logger name="org.flowable.engine.impl.persistence" level="INFO" />
<logger name="com.jeesite" level="INFO" />
<logger name="com.jeesite.common.mybatis.mapper" level="INFO" />
</springProfile> -->
</included>

View File

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 全局参数 -->
<settings>
<!-- 使全局的映射器启用或禁用缓存。 -->
<setting name="cacheEnabled" value="true"/>
<!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
<setting name="aggressiveLazyLoading" value="true"/>
<!-- 是否允许单条sql 返回多个数据集 (取决于驱动的兼容性) default:true -->
<setting name="multipleResultSetsEnabled" value="true"/>
<!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
<setting name="useColumnLabel" value="true"/>
<!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true这个设置将强制使用被生成的主键有一些驱动器不兼容不过仍然可以执行。 default:false -->
<setting name="useGeneratedKeys" value="false"/>
<!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE不映射 PARTIAL:部分 FULL:全部 -->
<setting name="autoMappingBehavior" value="PARTIAL"/>
<!-- 这是默认的执行类型 SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句BATCH: 执行器可以重复执行语句和批量更新) -->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 使用驼峰命名法转换字段。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 设置本地缓存范围 session:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
<setting name="localCacheScope" value="SESSION"/>
<!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER插入空值时不需要指定类型 -->
<setting name="jdbcTypeForNull" value="NULL"/>
<!-- 迭代集合的时候如果空值,则忽略而不抛出异常 -->
<setting name="nullableOnForEach" value="true"/>
<!-- 返回值为Map时当返回空值字段时仍然需要返回这个Key -->
<setting name="callSettersOnNulls" value="true"/>
</settings>
<!-- 类型别名 -->
<typeAliases>
<typeAlias alias="Page" type="com.jeesite.common.entity.Page" /><!--分页 -->
</typeAliases>
<!-- 插件配置 -->
<plugins>
<plugin interceptor="com.jeesite.common.mybatis.interceptor.DataSourceInterceptor" />
<plugin interceptor="com.jeesite.common.mybatis.interceptor.PaginationInterceptor" />
</plugins>
</configuration>

View File

@@ -0,0 +1,5 @@
/*!
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* No deletion without permission, or be held responsible to law.
* 项目自定义的公共CSS可覆盖jeesite.css里的样式
*/

View File

@@ -0,0 +1,5 @@
/*!
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* No deletion without permission, or be held responsible to law.
* 项目自定义的公共JavaScript可覆盖jeesite.js里的方法
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -0,0 +1,23 @@
<%/* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* No deletion without permission, or be held responsible to law. */ %>
<link rel="stylesheet" href="${ctxStatic}/fonts/font-icons.min.css">
<link rel="stylesheet" href="${ctxStatic}/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="${ctxStatic}/select2/4.0/select2.css?${_version}">
<link rel="stylesheet" href="${ctxStatic}/icheck/1.0/minimal/grey.css?${_version}">
<% if (@ListUtils.inString('zTree', libs!)){ %>
<link rel="stylesheet" href="${ctxStatic}/jquery-ztree/3.5/css/awesome/zTreeStyle.css?${_version}">
<% } %>
<% if (@ListUtils.inString('tabPage', libs!)){ %>
<link rel="stylesheet" href="${ctxStatic}/wdScrollTab/css/TabPanel.css?${_version}">
<% } %>
<% if (@ListUtils.inString('dataGrid', libs!)){ %>
<link rel="stylesheet" href="${ctxStatic}/jqGrid/4.7/css/ui.jqgrid.css?${_version}">
<% } %>
<% if (@ListUtils.inString('layout', libs!)){ %>
<link rel="stylesheet" href="${ctxStatic}/jquery-plugins/jquery.layout-latest.css?${_version}">
<% } %>
<% if (@ListUtils.inString('fileupload', libs!)){ %>
<link rel="stylesheet" href="${ctxStatic}/webuploader/0.1/webuploader.extend.css?${_version}">
<% } %>
<link rel="stylesheet" href="${ctxStatic}/adminlte/css/AdminLTE.min.css?${_version}">
<link rel="stylesheet" href="${ctxStatic}/common/jeesite.css?${_version}">

View File

@@ -0,0 +1,11 @@
<%/* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* No deletion without permission, or be held responsible to law. */%>
<meta charset="utf-8"><meta content="webkit" name="renderer"/><meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="keywords" content="PoweredByJeeSiteV4.0"/><meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
<meta name="description" content="PoweredByJeeSiteV4.0"/><meta content="no-cache" http-equiv="Pragma"/><meta http-equiv="Expires" content="0"/>
<meta content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<title>${(isNotBlank(title!) ? title! + ' - ' : '') + @Global.getConfig('productName')}</title>
<link rel="shortcut icon" href="${ctxStatic}/favicon.png" type="image/png">
<script src="${ctxPath}/global.min.js?ctx=${ctx}"></script>
<script src="${ctxStatic}/jquery/jquery-3.7.0.min.js"></script>
<script src="${ctxStatic}/jquery/jquery-migrate-3.4.0.min.js"></script>

View File

@@ -0,0 +1,48 @@
<%/* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* No deletion without permission, or be held responsible to law. */ %>
<script src="${ctxStatic}/bootstrap/js/bootstrap.min.js"></script>
<script src="${ctxStatic}/select2/4.0/select2.js?${_version}"></script>
<script src="${ctxStatic}/select2/4.0/i18n/${lang()}.js?${_version}"></script>
<script src="${ctxStatic}/layer/3.5/layer.js?${_version}"></script>
<script src="${ctxStatic}/laydate/5.3/laydate.js?${_version}"></script>
<% if (@ListUtils.inString('zTree', libs!)){ %>
<script src="${ctxStatic}/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js?${_version}"></script>
<% } %>
<% if (@ListUtils.inString(['tabPage', 'dataGrid', 'fileupload'], libs!)){ %>
<script src="${ctxStatic}/jquery/jquery-ui-sortable-1.13.2.min.js"></script>
<% } %>
<% if (@ListUtils.inString('tabPage', libs!)){ %>
<script src="${ctxStatic}/wdScrollTab/js/TabPanel.js?${_version}"></script>
<script src="${ctxStatic}/wdScrollTab/js/TabPanel.extend.js?${_version}"></script>
<script src="${ctxStatic}/wdScrollTab/js/TabPanel_i18n.js?${_version}"></script>
<% } %>
<% if (@ListUtils.inString('dataGrid', libs!)){ %>
<script src="${ctxStatic}/jqGrid/4.7/js/jquery.jqGrid.js?${_version}"></script>
<script src="${ctxStatic}/jqGrid/4.7/js/jquery.jqGrid.extend.js?${_version}"></script>
<script src="${ctxStatic}/jqGrid/4.7/js/i18n/${lang()}.js?${_version}"></script>
<% } %>
<% if (@ListUtils.inString('validate', libs!)){ %>
<script src="${ctxStatic}/jquery-validation/1.16/jquery.validate.js?${_version}"></script>
<script src="${ctxStatic}/jquery-validation/1.16/localization/messages_${lang()}.js?${_version}"></script>
<script src="${ctxStatic}/jquery-validation/1.16/jquery.validate.extend.js?${_version}"></script>
<% } %>
<% if (@ListUtils.inString('layout', libs!)){ %>
<script src="${ctxStatic}/jquery/jquery-ui-draggable-1.13.2.min.js?${_version}"></script>
<script src="${ctxStatic}/jquery/jquery-ui-effect-1.13.2.min.js?${_version}"></script>
<script src="${ctxStatic}/jquery-plugins/jquery.layout-latest.js?${_version}"></script>
<% } %>
<% if (@ListUtils.inString('inputmask', libs!)){ %>
<script src="${ctxStatic}/jquery-plugins/jquery.inputmask.js?${_version}"></script>
<% } %>
<% if (@ListUtils.inString('fileupload', libs!)){ %>
<script src="${ctxStatic}/webuploader/0.1/webuploader.js?${_version}"></script>
<script src="${ctxStatic}/webuploader/0.1/webuploader.extend.js?${_version}"></script>
<script src="${ctxStatic}/webuploader/0.1/i18n/${lang()}.js?${_version}"></script>
<% } %>
<% if (@ListUtils.inString('ueditor', libs!)){ %>
<script src="${ctxStatic}/ueditor/1.4/ueditor.config.js?${_version}"></script>
<script src="${ctxStatic}/ueditor/1.4/ueditor.all.js?${_version}"></script>
<script src="${ctxStatic}/ueditor/1.4/lang/${lang()}/${lang()}.js?${_version}"></script>
<% } %>
<script src="${ctxStatic}/common/jeesite.js?${_version}"></script>
<script src="${ctxStatic}/common/i18n/jeesite_${lang()}.js?${_version}"></script>

View File

@@ -0,0 +1,12 @@
<%/* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* No deletion without permission, or be held responsible to law. */ %>
<% print('<'+'!DOC'+'TYPE html'+'>'); %>
<% print('<'+'html'+'><'+'head'+'>'); %>
<% include('/include/head.html', {title: text(title!)}){} %>
<% include('/include/csslibs.html', {libs: libs!}){} %>
</head><body class="hold-transition ${bodyClass!}">
<% if (!@ListUtils.inString('layout', libs!)){ %>
<div class="wrapper">${layoutContent}</div>
<% }else{ %>${layoutContent}<% } %>
<a id="scroll-up" href="#" class="btn btn-sm hide"><i class="fa fa-angle-double-up"></i></a>
<% include('/include/jslibs.html', {libs: libs!}){} %>

View File

@@ -0,0 +1,51 @@
@echo off
rem /**
rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
rem * No deletion without permission, or be held responsible to law.
rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̡<EFBFBD>
echo.
rem pause
rem echo.
%~d0
cd %~dp0
title %cd%
rem <20><><EFBFBD><EFBFBD>JDKĿ¼
rem set "JAVA_HOME=%cd%\jdk1.8.0_x64"
rem <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
set "CLASS_PATH=%cd%/../"
rem <20>Ż<EFBFBD>JVM<56><4D><EFBFBD><EFBFBD>
set "JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m"
rem <20><>ʽһ<CABD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
rem set "JAVA_OPTS=%JAVA_OPTS% -Dspring.config.location=%cd%\app.yml"
rem <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD>ز<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
rem set "JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=prod"
if "%JAVA_HOME%" == "" goto noJavaHome
if not "%JAVA_HOME%" == "" goto gotJavaHome
goto end
:noJavaHome
set RUN_JAVA=java
goto runJava
:gotJavaHome
set "RUN_JAVA=%JAVA_HOME%\bin\java"
goto runJava
:runJava
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.WarLauncher
goto end
:end
pause

View File

@@ -0,0 +1,33 @@
#!/bin/sh
# /**
# * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# */
echo ""
echo "[信息] 运行Web工程。"
echo ""
# 设置JDK目录
# JAVA_HOME="$PWD/jdk1.8.0_x64"
# 设置类加载路径
CLASS_PATH="$PWD/../"
# 优化JVM参数
# JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx1024m"
# 方式一、配置外部自定义的属性文件(建议)
# JAVA_OPTS="$JAVA_OPTS -Dspring.config.location=$PWD/app.yml"
# 方式二、配置环境名称,加载不同的属性文件
# JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=prod"
if [ -z "$JAVA_HOME" ]; then
RUN_JAVA=java
else
RUN_JAVA="$JAVA_HOME"/bin/java
fi
exec $RUN_JAVA -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.WarLauncher