帮助您快速搭建基于YMP框架的各种Java工程结构的Maven扩展工具集合,主要包括项目模板
和Maven插件命令
两部分。
YMP框架项目地址:https://gitee.com/suninformation/ymate-platform-v2
目前提供以下4种项目模板:
ymate-archetype-quickstart (quickstart)
:标准Java工程,已集成YMP依赖;
ymate-archetype-webapp (webapp)
:JavaWeb工程,已集成WebMVC框架相关依赖和完整的参数配置;
ymate-archetype-module (module)
:YMP模块工程,提供Demo示例及JUint测试代码;
ymate-archetype-serv (serv)
:YMP服务工程,分别提供TCP、UDP客户端和服务端示例程序及相关配置;
查看使用文档:通过项目模板自动生成Java工程
在pom.xml
文件中添加插件配置(必须):
net.ymate.maven.plugins
ymate-maven-plugin
1.0-SNAPSHOT
执行命令格式:
mvn ymate: -D= -D=
注:请在
pom.xml
文件所在路径下执行;
命令列表:
命令 | 说明 |
---|---|
module |
模块代码生成器 |
controller |
控制器类生成器 |
mapping |
控制器请求方法生成器 |
interceptor |
拦截器类生成器 |
validator |
验证器类生成器 |
repository |
存储器类生成器 |
service |
服务层类生成器 |
config |
配置类生成器 |
enpasswd |
字符串加密 |
depasswd |
字符串解密 |
tomcat |
Tomcat服务配置生成器 |
entity |
数据实体代码生成器 |
crud |
CRUD代码生成器 |
2.1.1 module
:模块代码生成器
用于生成基于
IModule
接口的模块代码实现(完全替代ymate-archetype-module (module)
模板);
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
name | 是 | 模块名称 |
package | 否 | 模块包名,默认值:${project.groupId}.module |
命令示例:
创建名称为
Demo
的模块;
执行命令:
mvn ymate:module -Dname=Demo
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:module (default-cli) @ ympDemo ---
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/module/IDemo.java
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/module/Demo.java
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/module/IDemoModuleCfg.java
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/module/impl/DefaultModuleCfg.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.504s
[INFO] Finished at: Tue Oct 31 17:12:56 CST 2017
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------
2.1.2 controller
:控制器类生成器
用于生成适用于WebMVC模块的控制器类代码;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
name | 是 | 控制器名称 |
package | 否 | 控制器包名,默认值:${project.groupId}.controller |
suffix | 否 | 控制器类名后缀,默认值:Controller |
singleton | 否 | 控制器是否为单例,默认值:true |
transaction | 否 | 是否添加事务注解,默认值:false |
mapping | 否 | 控制器请求根路径,默认值:空 |
mapping.method | 否 | 控制器请求方式,默认值:空 ,多个用, 分隔,取值范围:GET ,HEAD ,POST ,PUT ,DELETE ,OPTIONS ,TRACE |
mapping.header | 否 | 控制器请求头,默认值:空 ,多个用, 分隔 |
mapping.param | 否 | 控制器请求参数,默认值:空 ,多个用, 分隔 |
命令示例:
创建名称为
DemoAction
的控制器类,内容如下:
@Controller
@RequestMapping(value = "/user/info", method = {Type.HttpMethod.POST, Type.HttpMethod.GET} )
public class DemoAction {
@RequestMapping("/")
public IView __index() throws Exception {
return View.textView("Hello YMPer!");
}
}
执行命令:
mvn ymate:controller -Dname=Demo -Dsuffix=Action -Dmapping=/user/info -Dmapping.method=post,get
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:controller (default-cli) @ ympDemo ---
[INFO] properties:
[INFO] |--controllerName:DemoAction
[INFO] |--packageName:net.ymate.demo.controller
[INFO] |--singleton:true
[INFO] |--transaction:false
[INFO] |--mapping:/user/info
[INFO] |--method:POST
[INFO] |--method:GET
[WARNING] Skip existing file /Users/.../ympDemo/src/main/java/net/ymate/demo/controller/DemoAction.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.377s
[INFO] Finished at: Tue Oct 31 17:48:20 CST 2017
[INFO] Final Memory: 8M/245M
[INFO] ------------------------------------------------------------------------
2.1.3 mapping
:控制器请求方法生成器
用于为指定的控制器类追加请求方法代码片段;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
name | 是 | 控制器名称 |
package | 否 | 控制器包名,默认值:${project.groupId}.controller |
suffix | 否 | 控制器类名后缀,默认值:Controller |
method | 是 | 控制器方法名称 |
method.param | 否 | 控制器方法参数,默认值:空 ,多个用, 分隔;可以通过<取值方式>:<参数名称> 指定参数取值方式,取值方式包括:path ,header ,cookie ,model ,file |
fileUpload | 否 | 是否添加@FileUpload注解 |
transaction | 否 | 是否添加事务注解,默认值:false |
mapping | 否 | 控制器请求根路径,默认值:空 |
mapping.method | 否 | 控制器请求方式,默认值:空 ,多个用, 分隔,取值范围:GET ,HEAD ,POST ,PUT ,DELETE ,OPTIONS ,TRACE |
mapping.header | 否 | 控制器请求头,默认值:空 ,多个用, 分隔 |
mapping.param | 否 | 控制器请求参数,默认值:空 ,多个用, 分隔 |
命令示例:
为名称为
DemoAction
的控制器类添加__sayHi
请求方法并添加username
和age
方法参数,其中age
参数通过@Pathvariable
注解获取,内容如下:
@RequestMapping(value = "/sayHi/{age}" )
public IView __sayHi(@RequestParam String username, @PathVariable String age) throws Exception {
return View.textView("mapping: /sayHi/{age}");
}
执行命令:
mvn ymate:mapping -Dname=Demo -Dsuffix=Action -Dmapping=/sayHi/{age} -Dmethod=sayHi -Dmethod.param=username,path:age
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:mapping (default-cli) @ ympDemo ---
[INFO] properties:
[INFO] |--controllerName:DemoAction
[INFO] |--fileUpload:false
[INFO] |--transaction:false
[INFO] |--method:__sayHi
[INFO] |--param:username
[INFO] |--param:path:age
[INFO] |--mapping:/sayHi/{age}
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/controller/DemoAction.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.482s
[INFO] Finished at: Wed Nov 01 22:27:58 CST 2017
[INFO] Final Memory: 11M/309M
[INFO] ------------------------------------------------------------------------
2.1.4 interceptor
:拦截器类生成器
用于生成拦截器类代码;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
name | 是 | 拦截器名称 |
package | 否 | 拦截器包名,默认值:${project.groupId}.intercept |
suffix | 否 | 拦截器类名后缀,默认值:Interceptor |
命令示例:
创建名称为
DemoInterceptor
的拦截器,内容如下:
public class DemoInterceptor extends AbstractInterceptor {
@Override
protected Object __before(InterceptContext context) throws Exception {
return null;
}
@Override
protected Object __after(InterceptContext context) throws Exception {
return null;
}
}
执行命令:
mvn ymate:interceptor -Dname=Demo
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:interceptor (default-cli) @ ympDemo ---
[INFO] properties:
[INFO] |--interceptorName:DemoInterceptor
[INFO] |--packageName:net.ymate.demo.intercept
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/intercept/DemoInterceptor.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.421s
[INFO] Finished at: Wed Nov 01 22:41:23 CST 2017
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------
2.1.5 validator
:验证器类生成器
用于生成验证器注解及类代码;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
name | 是 | 验证器名称 |
package | 否 | 验证器包名,默认值:${project.groupId}.validation |
suffix | 否 | 验证器类名后缀,默认值:Validator |
命令示例:
创建名称为
VDemo
和DemoValidator
的验证器注解和验证器类,内容如下:
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface VDemo {
/**
* @return 自定义验证消息
*/
String msg() default "";
}
@Validator(VDemo.class)
@CleanProxy
public class DemoValidator extends AbstractValidator {
@Override
public ValidateResult validate(ValidateContext context) {
Object _paramValue = context.getParamValue();
if (_paramValue != null) {
boolean _matched = false;
VDemo _anno = (VDemo) context.getAnnotation();
// TODO Code here.
if (_matched) {
String _pName = StringUtils.defaultIfBlank(context.getParamLabel(), context.getParamName());
_pName = __doGetI18nFormatMessage(context, _pName, _pName);
String _msg = StringUtils.trimToNull(_anno.msg());
if (_msg != null) {
_msg = __doGetI18nFormatMessage(context, _msg, _msg, _pName);
}
return new ValidateResult(context.getParamName(), _msg);
}
}
return null;
}
}
执行命令:
mvn ymate:validator -Dname=Demo
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:validator (default-cli) @ ympDemo ---
[INFO] properties:
[INFO] |--validatorName:DemoValidator
[INFO] |--packageName:net.ymate.demo.validation
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/validation/VDemo.java
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/validation/DemoValidator.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.438s
[INFO] Finished at: Wed Nov 01 22:48:42 CST 2017
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------
2.1.6 repository
:存储器类生成器
用于生成存储器类代码;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
name | 是 | 存储器名称 |
package | 否 | 存储器包名,默认值:${project.groupId}.repository |
suffix | 否 | 存储器类名后缀,默认值:Repository |
transaction | 否 | 是否添加事务注解,默认值:false |
config | 否 | 是否启用配置对象,默认值:false |
interface | 否 | 是否启用接口模式,默认值:false |
命令示例:
创建名称为
DemoRepository
的存储器并启用配置对象和接口模式,内容如下:
public interface IDemoRepository {
IResultSet
执行命令:
mvn ymate:repository -Dname=Demo -Dtransaction=true -Dconfig=true -Dinterface=true
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:repository (default-cli) @ ympDemo ---
[INFO] properties:
[INFO] |--repositoryName:DemoRepository
[INFO] |--packageName:net.ymate.demo.repository
[INFO] |--transaction:true
[INFO] |--withConfig:true
[INFO] |--withInterface:true
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/repository/IDemoRepository.java
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/repository/impl/DemoRepository.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.438s
[INFO] Finished at: Wed Nov 01 23:36:27 CST 2017
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------
2.1.7 service
:服务层类生成器
用于生成服务层类代码;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
name | 是 | 服务类名称 |
package | 否 | 服务类包名,默认值:${project.groupId}.service |
suffix | 否 | 服务类名后缀,默认值:Service |
transaction | 否 | 是否添加事务注解,默认值:false |
命令示例:
创建名称为
DemoService
的服务类及接口,内容如下:
public interface IDemoService {
}
@Bean
public class DemoService implements IDemoService {
}
执行命令:
mvn ymate:service -Dname=Demo
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:service (default-cli) @ ympDemo ---
[INFO] properties:
[INFO] |--serviceName:DemoService
[INFO] |--packageName:net.ymate.demo.service
[INFO] |--transaction:false
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/service/IDemoService.java
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/service/impl/DemoService.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.425s
[INFO] Finished at: Wed Nov 01 23:44:13 CST 2017
[INFO] Final Memory: 10M/309M
[INFO] ------------------------------------------------------------------------
2.1.8 config
:配置类生成器
用于生成基于YMP框架配置体系结构的配置类代码及相关配置文件;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
name | 是 | 配置类名称 |
home | 否 | 配置体系根路径,WEB工程默认值:/src/main/webapp/WEB-INF ,普通工程默认值:/src/main/resources |
properties | 否 | 是否使用properties格式的配置文件,默认值:false |
file | 否 | 自定义配置文件相对路径,默认值:cfgs/<配置类名称>.cfg.
|
package | 否 | 配置类包名,默认值:${project.groupId}.service |
suffix | 否 | 配置类名后缀,默认值:Service |
interface | 否 | 是否启用接口模式,默认值:false |
命令示例:
创建名称为
DemoConfig
的配置类、接口和配置文件,内容如下:
public interface IDemoConfig {
}
@Configuration("cfgs/demo.cfg.xml")
public class DemoConfig extends DefaultConfiguration implements IDemoConfig {
}
// --- cfgs/demo.cfg.xml
iphone
ipad
imac
itouch
- red
- 120g
- small
- 2015
执行命令:
mvn ymate:config -Dname=Demo -Dinterface=true
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:config (default-cli) @ ympDemo ---
[INFO] properties:
[INFO] |--type:jar
[INFO] |--configHome:/src/main/resources
[INFO] |--configName:DemoConfig
[INFO] |--packageName:net.ymate.demo.config
[INFO] |--fileName:cfgs/demo.cfg.xml
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/config/IDemoConfig.java
[INFO] Output file: /Users/.../ympDemo/src/main/java/net/ymate/demo/config/impl/DemoConfig.java
[INFO] Output file: /Users/.../ympDemo/src/main/resources/cfgs/demo.cfg.xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.434s
[INFO] Finished at: Thu Nov 02 00:05:02 CST 2017
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------
2.1.9 enpasswd
:字符串加密
基于
IPasswordProcessor
密码处理器接口的默认DES
实现,对数据库等登录密码进行加密操作;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
passwd | 是 | 原始字符串 |
命令示例:
对字符串
abc12345678
进行加密:
执行命令:
mvn ymate:enpasswd -Dpasswd=abc12345678
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:enpasswd (default-cli) @ ympDemo ---
[INFO] Encrypt password: D3ytOQrD63BlKGDMJnaYsQ==
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.515s
[INFO] Finished at: Thu Nov 02 09:00:35 CST 2017
[INFO] Final Memory: 11M/245M
[INFO] ------------------------------------------------------------------------
2.1.10 depasswd
:字符串解密
基于
IPasswordProcessor
密码处理器接口的默认DES
实现,对数据库等登录密码进行解密操作;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
passwd | 是 | 已加密字符串 |
命令示例:
对已加密字符串
D3ytOQrD63BlKGDMJnaYsQ==
进行解密:
执行命令:
mvn ymate:depasswd -Dpasswd=D3ytOQrD63BlKGDMJnaYsQ==
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:depasswd (default-cli) @ ympDemo ---
[INFO] Decrypt password: abc12345678
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.459s
[INFO] Finished at: Thu Nov 02 09:03:51 CST 2017
[INFO] Final Memory: 11M/245M
[INFO] ------------------------------------------------------------------------
2.1.11 tomcat
:Tomcat服务配置生成器
生成基于Tomcat的获立JVM服务目录结构及配置文件,目前支持Tomcat版本:
6
、7
、8
;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
serviceName | 是 | 服务名称(若在Windows 环境下同时为注册服务名称) |
catalinaHome | 是 | Tomcat软件包安装路径,默认值:${CATALINA_HOME} |
catalinaBase | 否 | 生成的服务存放的位置,默认值:当前路径 |
hostName | 否 | 主机名称,默认值:localhost |
hostAlias | 否 | 别名,默认值:空 |
tomcatVersion | 否 | 指定Tomcat软件包的版本,默认值:7 ,目前支持:6 ,7 ,8 ,(必须与catalinaHome 指定的版本匹配) |
servicePort | 否 | 服务端口(Tomcat服务的Server端口),默认值:8005 |
connectorPort | 否 | 容器端口(Tomcat服务的Connector端口),默认值:8088 |
ajp | 否 | 是否启用AJP配置,默认值:false |
ajpHost | 否 | AJP主机名称,默认值:localhost |
ajpPort | 否 | AJP端口,默认值:8009 |
命令示例:
基于
Tomcat7.x
创建名称为DemoServer
的服务:
执行命令:
mvn ymate:tomcat -DserviceName=DemoServer -DcatalinaHome=/Users/.../apache-tomcat-7.0.54 -DcatalinaBase=/Users/.../Temp
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:tomcat (default-cli) @ ympDemo ---
[INFO] Tomcat Service:DemoServer
[INFO] |--CatalinaHome:/Users/.../apache-tomcat-7.0.54
[INFO] |--CatalinaBase:/Users/.../Temp
[INFO] |--HostName:localhost
[INFO] |--HostAlias:
[INFO] |--TomcatVersion:7
[INFO] |--ServerPort:8005
[INFO] |--ConnectorPort:8080
[INFO] |--RedirectPort:8443
[INFO] |--Ajp:false
[INFO] Output file: /Users/.../Temp/DemoServer/conf/server.xml
[INFO] Output file: /Users/.../Temp/DemoServer/vhost.conf
[INFO] Output file: /Users/.../Temp/DemoServer/bin/install.bat
[INFO] Output file: /Users/.../Temp/DemoServer/bin/manager.bat
[INFO] Output file: /Users/.../Temp/DemoServer/bin/shutdown.bat
[INFO] Output file: /Users/.../Temp/DemoServer/bin/startup.bat
[INFO] Output file: /Users/.../Temp/DemoServer/bin/uninstall.bat
[INFO] Output file: /Users/.../Temp/DemoServer/bin/manager.sh
[INFO] Output file: /Users/.../Temp/DemoServer/webapps/ROOT/index.jsp
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.498s
[INFO] Finished at: Thu Nov 02 10:05:47 CST 2017
[INFO] Final Memory: 11M/309M
[INFO] ------------------------------------------------------------------------
生成的文件说明:
文件名称 | 说明 |
---|---|
conf/server.xml |
Tomcat 服务配置文件 |
vhost.conf |
与Nginx 和Apache Server 整合所需配置 |
bin/install.bat |
Windows 环境下服务安装 |
bin/manager.bat |
Windows 环境下打开Tomcat 服务管理 |
bin/shutdown.bat |
Windows 环境下服务停止 |
bin/startup.bat |
Windows 环境下服务启动 |
bin/uninstall.bat |
Windows 环境下服务卸载 |
bin/manager.sh |
Linux 或Unix 环境下控制服务的启动或停止等操作 |
webapps/ROOT/index.jsp |
默认JSP首页文件 |
Linux
下服务的启动和停止:
需要为manager.sh
添加执行权限:
执行命令:
chmod +x manager.sh
启动服务:
执行命令:
./manager.sh start
控制台输出:
Using CATALINA_BASE: /Users/.../Temp/DemoServer
Using CATALINA_HOME: /Users/.../apache-tomcat-7.0.54
Using CATALINA_TMPDIR: /Users/.../Temp/DemoServer/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
Using CLASSPATH: /Users/.../apache-tomcat-7.0.54/bin/bootstrap.jar:/Users/.../apache-tomcat-7.0.54/bin/tomcat-juli.jar
Using CATALINA_PID: /Users/.../Temp/DemoServer/logs/catalina.pid
Tomcat started.
停止服务:
执行命令:
./manager.sh stop
控制台输出:
Using CATALINA_BASE: /Users/.../Temp/DemoServer
Using CATALINA_HOME: /Users/.../apache-tomcat-7.0.54
Using CATALINA_TMPDIR: /Users/.../Temp/DemoServer/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
Using CLASSPATH: /Users/.../apache-tomcat-7.0.54/bin/bootstrap.jar:/Users/.../apache-tomcat-7.0.54/bin/tomcat-juli.jar
Using CATALINA_PID: /Users/.../Temp/DemoServer/logs/catalina.pid
Tomcat stopped.
2.1.12 entity
:数据实体代码生成器
通过已有数据库表结构生成对应的数据实体类,支持表和视图,支持
ConsoleTable
和markdown
格式输出表结构;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
view | 否 | 指定本次针对视图生成代码,默认值:false |
markdown | 否 | 是否采用markdown 格式输出表结构,默认值:false |
数据源及生成规则配置:
在生成数据实体之前,需要先将默认数据源和实体生成规则配置好,请根据实际需求配置并确认
ymp-conf.properties
以下内容:
#-------------------------------------
# JDBC持久化模块初始化参数
#-------------------------------------
# 是否显示执行的SQL语句,默认为false
ymp.configs.persistence.jdbc.ds.default.show_sql=true
# 数据库表前缀名称,默认为空
ymp.configs.persistence.jdbc.ds.default.table_prefix=ym_
# 数据库连接字符串,必填参数
ymp.configs.persistence.jdbc.ds.default.connection_url=jdbc:mysql://localhost:3306/ymate_demo
# 数据库访问用户名称,必填参数
ymp.configs.persistence.jdbc.ds.default.username=root
# 数据库访问密码,可选参数
ymp.configs.persistence.jdbc.ds.default.password=
#-------------------------------------
# JDBC数据实体代码生成器配置参数
#-------------------------------------
# 是否生成新的BaseEntity类,默认为false(即表示使用框架提供的BaseEntity类)
ymp.params.jdbc.use_base_entity=
# 是否使用类名后缀,不使用和使用的区别如: User-->UserModel,默认为false
ymp.params.jdbc.use_class_suffix=
# 是否采用链式调用模式,默认为false
ymp.params.jdbc.use_chain_mode=
# 是否添加类成员属性值状态变化注解,默认为false
ymp.params.jdbc.use_state_support=
# 实体及属性命名过滤器接口实现类,默认为空
ymp.params.jdbc.named_filter_class=
# 数据库名称(仅针对特定的数据库使用,如Oracle),默认为空
ymp.params.jdbc.db_name=
# 数据库用户名称(仅针对特定的数据库使用,如Oracle),默认为空
ymp.params.jdbc.db_username=
# 数据库表名称前缀,多个用'|'分隔,默认为空
ymp.params.jdbc.table_prefix=
# 否剔除生成的实体映射表名前缀,默认为false
ymp.params.jdbc.remove_table_prefix=
# 预生成实体的数据表名称列表,多个用'|'分隔,默认为空表示全部生成
ymp.params.jdbc.table_list=
# 排除的数据表名称列表,在此列表内的数据表将不被生成实体,多个用'|'分隔,默认为空
ymp.params.jdbc.table_exclude_list=
# 需要添加@Readonly注解声明的字段名称列表,多个用'|'分隔,默认为空
ymp.params.jdbc.readonly_field_list=
# 生成的代码文件输出路径,默认为${root}
ymp.params.jdbc.output_path=
# 生成的代码所属包名称,默认为: packages
ymp.params.jdbc.package_name=
命令示例:
执行命令:
mvn ymate:entity
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building carfriend-core 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:entity (default-cli) @ carfriend-core ---
十一月 02, 2017 11:41:09 上午 net.ymate.platform.core.YMP init
信息:
__ ____ __ ____ ____
\ \ / / \/ | _ \ __ _|___ \
\ V /| |\/| | |_) | \ \ / / __) |
| | | | | | __/ \ V / / __/
|_| |_| |_|_| \_/ |_____| Website: http://www.ymate.net/
十一月 02, 2017 11:41:09 上午 net.ymate.platform.core.YMP init
信息: Initializing ymate-platform-core-2.0.2-Release build-20171030-0108 - debug:true
十一月 02, 2017 11:41:09 上午 net.ymate.platform.persistence.jdbc.JDBC init
信息: Initializing ymate-platform-persistence-jdbc-2.0.2-Release build-20171030-0108
十一月 02, 2017 11:41:09 上午 net.ymate.platform.core.YMP init
信息: Initialization completed, Total time: 191ms
十一月 02, 2017 11:41:09 上午 net.ymate.platform.persistence.jdbc.base.AbstractOperator execute
信息: [show full tables where Table_type='BASE TABLE'][][1][31ms]
Output file /Users/.../src/main/java/net/ymate/model/CategoryAttribute.java
TABLE_NAME: ym_category_attribute
MODEL_NAME: CategoryAttribute
+-------------+-------------------+-------------+----------------+--------+-----------+-------+----------+---------+---------+
| COLUMN_NAME | COLUMN_CLASS_NAME | PRIMARY_KEY | AUTO_INCREMENT | SIGNED | PRECISION | SCALE | NULLABLE | DEFAULT | REMARKS |
+-------------+-------------------+-------------+----------------+--------+-----------+-------+----------+---------+---------+
| id | java.lang.String | TRUE | FALSE | FALSE | 32 | 0 | FALSE | NULL | |
+-------------+-------------------+-------------+----------------+--------+-----------+-------+----------+---------+---------+
| catetory_id | java.lang.String | FALSE | FALSE | FALSE | 32 | 0 | FALSE | NULL | |
+-------------+-------------------+-------------+----------------+--------+-----------+-------+----------+---------+---------+
| attr_key | java.lang.String | FALSE | FALSE | FALSE | 255 | 0 | FALSE | NULL | |
+-------------+-------------------+-------------+----------------+--------+-----------+-------+----------+---------+---------+
| attr_value | java.lang.String | FALSE | FALSE | FALSE | 16383 | 0 | TRUE | NULL | |
+-------------+-------------------+-------------+----------------+--------+-----------+-------+----------+---------+---------+
| type | java.lang.Integer | FALSE | FALSE | FALSE | 2 | 0 | TRUE | 0 | |
+-------------+-------------------+-------------+----------------+--------+-----------+-------+----------+---------+---------+
| owner | java.lang.String | FALSE | FALSE | FALSE | 32 | 0 | TRUE | NULL | |
+-------------+-------------------+-------------+----------------+--------+-----------+-------+----------+---------+---------+
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.013s
[INFO] Finished at: Thu Nov 02 11:41:10 CST 2017
[INFO] Final Memory: 12M/208M
[INFO] ------------------------------------------------------------------------
特别提示:
通过插件生成的代码默认放置在
src/main/java
路径,当数据库表发生变化时,直接执行插件命令就可以快速更新数据实体对象;如果使用的JDBC驱动是
mysql-connector-java-6.x
及以上版本时,需要配置db_name
和db_username
参数,否则会产生异常;
2.1.13 crud
:CRUD代码生成器
通过规则配置文件自动生成控制器(
Controller
)、存储器(Repository
)等类代码,包括拦截器、参数验证、权限控制、文件上传、组件条件查询等;
参数列表:
参数名称 | 必须 | 说明 |
---|---|---|
file | 否 | CRUD规则配置文件,默认值:misc/crud.json |
action | 否 | 指定本次生成哪些代码,默认值:全部 ,取值范围:controller ,repository |
fromDb | 否 | 是否通过数据库表结构生成规则配置文件,默认值:false |
mapping | 否 | 指定生成的控制器基准RequestMapping 路径,默认值:空 |
命令示例:
生成默认CRUD规则配置文件:
执行命令:
mvn ymate:crud
控制台输出:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ympDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- ymate-maven-plugin:1.0-SNAPSHOT:crud (default-cli) @ ympDemo ---
[INFO] Output file: /Users/.../Temp/ympDemo/misc/crud.json
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.424s
[INFO] Finished at: Thu Nov 02 12:12:17 CST 2017
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------
若使用
-DfromDb=true
方式通过数据库表结构生成规则配置文件,需要在ymp-conf.properties
文件中配置好默认数据源;以上命令在执行时,若
crud.json
配置文件存在则直接生成代码,否则将生成默认配置文件,内容如下:
规则配置文件说明:
{
"application": { // ————基本信息
"name": "ympDemo", // 名称
"version": "1.0-SNAPSHOT", // 当前配置版本
"package": "net.ymate.demo", // 代码基准包名
"author": "ymatescaffold", // 作者信息
"createTime": "2017/11/02 12:12", // 配置文件创建时间
"locked": false // 是否锁定,锁定状态下不会生成任何文件
},
"security": { // ————权限安全相关配置
"enabled": false, // 是否开启权限配置
"name": "", // 权限组名称
"prefix": "", // 权限名称前缀
"roles": { // 基本角色配置
"admin": false, // 是否管理员角色
"operator": false, // 是否操作员角色
"user": false // 是否普通用户角色
},
"permissions": [] // 全局权限列表,如:["USER_ADD", "USER_DETAIL"]
},
"intercept": { // ————拦截器相关配置
"before": [], // 前置拦截器类名集合,如:["net.ymate.demo.intercept.UserInterceptor"]
"after": [], // 后置拦截器类名集合
"around": [], // 环绕(前、后置)拦截器类名集合
"params": {} // 拦截器参数,如:{"p1": "p1_value"}
},
"apis": [ // ————接口对象相关配置
{
"name": "", // 当前接口对象名称,如:”user“
"mapping": "", // 当前控制器类基准URL路径,如:"/v1/user"
"type": "model", // 生成类型,取值范围:model,query
"model": "", // 数据实体类名,当type="model"时必填,如:"net.ymate.model.User"
"query": "", // SQL查询语句,当type="query"时必填
"description": "", // 文档描述
"locked": false, // 是否锁定,锁定状态下忽略当前配置的代码生成
"timestamp": false, // 是否使用create_time和last_modify_time字段
"status": [ // ————自定义数据状态处理相关配置
{
"enabled": false, // 是否生成此状态配置代码
"name": "delete", // 名称(用于生成方法名称)
"column": "is_deleted", // 对应的数据表字段名称
"type": "integer", // 数据类型,常用string,integer,long等对象类型
"value": "1", // 本次操作将变更字段的值
"reason": false, // 是否必须提交操作原因说明参数
"description": "" // 文档描述
}
],
"primary": { // ——主键参数
"name": "", // 参数名称
"label": "", // 参数标签名称(用于显示)
"column": "", // 参数对应的数据表字段名称
"type": "string", // 数据类型,常用string,integer,long等对象类型
"validation": { // ————参数验证相关配置
"max": 0, // 参数最大长度
"min": 0, // 参数最小长度
"regex": "", // 正则表达式
"numeric": false // 是否必须为数值
},
"description": "" // 参数文档描述
},
"params": [ // ————参数集合
{
"name": "", // 参数名称
"label": "", // 参数标签名称(用于显示)
"column": "", // 参数对应的数据表字段名称
"type": "string", // 数据类型,常用string,integer,long等对象类型
"required": false, // 是否必须
"defaultValue": "", // 参数默认值
"validation": { // ————参数验证相关配置
"max": 0, // 参数最大长度
"min": 0, // 参数最小长度
"regex": "", // 正则表达式
"mobile": false, // 是否必须为手机号码格式
"email": false, // 是否必须为邮箱地址格式
"numeric": false, // 是否必须为数值
"datetime": false // 是否必须为日期时间戳
},
"filter": { // ————查询相关配置
"enabled": false, // 是否作为查询条件
"like": false, // 是否采用like进行查询(自动为参数值两端添加"%")
"region": false // 是否采用between进行范围查询(一般用于数值和时间参数)
},
"upload": { // ————文件上传相关配置
"enabled": false, // 是否接收上传文件
"contentTypes": [] // 上传文件类型,如:["image/png", "image/jpeg"]
},
"description": "" // 参数文档描述
}
]
}
]
}
YMP不仅提供便捷的Web及其它Java项目的快速开发体验,也将不断提供更多丰富的项目实践经验。
感兴趣的小伙伴儿们可以加入 官方QQ群480374360,一起交流学习,帮助YMP成长!
了解更多有关YMP框架的内容,请访问官网:http://www.ymate.net/
MAVEN的插件地址: http://maven.apache.org/plugins/# 包括官方的插件和一些重要的第三方插件 1. 官方 1. compiler 作用 指定项目使用的java编译器,地址 这个插件一般都会显示声明,因为官网上说了,“默认JDK1.5,如果要指定请设置XXX”,现在没人用1.5吧,所以都会用到 常见问题 Eclipse下的maven项目编译问题: Eclipse中
<build> <finalName>cloudreportweb</finalName> <plugins> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>yuicompressor-maven-plugin</artifactId> <execu
核心功能 压缩和混淆Javascript 和 CSS 文件 可用于压缩 webapp 目录 (src/main/webapp)和在jar中的js和css文件 压缩文件默认重命名为以-min为后缀,因此在应用中压缩版本和原始版本可以同时存在。但如果您不想保留原始文件并想覆盖它,请设置选项'nosuffix'为'true' 用法 1、最低要求 Maven:3.0.4 JDK:maven-compile
POM(Project Object Model,项目对象模型)是 Maven 的基本组件,它是以 xml 文件的形式存放在项目的根目录下,名称为 pom.xml。 POM 中定义了项目的基本信息,用于描述项目如何构建、声明项目依赖等等。 当 Maven 执行一个任务时,它会先查找当前项目的 POM 文件,读取所需的配置信息,然后执行任务。在 POM 中可以设置如下配置: 项目依赖 插件 目标 构
<build> <sourceDirectory>src/main/java</sourceDirectory> <outputDirectory>target/A/lib/classes</outputDirectory> </build> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-
YMP-Maven-Extension(YMP Maven扩展工具) 帮助您快速搭建基于YMP框架的各种Java工程结构的Maven扩展工具集合,主要包括项目模板和Maven插件命令两部分。 1、项目模板 目前提供以下5种项目模板: ymate-archetype-quickstart (quickstart):标准Java工程,已集成YMP依赖; ymate-archetype-webapp (
Overview Apache NiFi extensions are packaged in NARs (NiFi archives). A NAR allows several components and their dependencies to be packaged together into a single package. The NAR package is then prov
<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.
<?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/P
In the parent pom.xml, add the configuration parent pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSche
As developers, we understand that you don't want to spend years reading documentation about your build tool. We get it. You just want to get to work. On the other hand, if you don't take a little bit
<?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 ht
POM文件中的packaging标签申明了该工程的打包类型 当POM中没有什么packaging,默认为jar 可选的值有 pom jar maven-plugin ejb war ear rar 官方说明链接传送门
我正在尝试使用maven assembly插件生成zip文件程序集。我只剩下两个问题,我想知道是否有可能仅仅通过配置来解决,但作为最后的手段,我也在考虑编写自己的maven插件来扩展maven assembly插件 丢失的两块是 > 将与include模式匹配的每个依赖项放入其自己的 这是我的程序集的相关部分 这将使用
扩展工具为外业精灵提供的额外使用工具,这些工具可以提供一些更加便捷的功能,在后续的版本中会更新更多的工具提供使用。 实验室 点击主界面中左上方菜单图标可打开用户信息侧边栏,点击侧边栏中的设置图标可跳转至设置页面: 设置页面内,点击实验室选项可跳转至实验室页面。 实验室页面主要包含:路径规划模式、绘制点位吸附、标注名显示、地图缩放、电子罗盘、
PHP-X是一个基于PHP ZendVM的C++封装层,可以基于PHP-X开发PHP扩展、C++嵌入PHP、PHP SAPI等程序。PHP-X可以大大降低PHP内核扩展开发的难度,提升效率。 开源中国码云:http://git.oschina.net/swoole/PHP-X Github仓库:https://github.com/swoole/PHP-X QQ群:376696453 环境依赖 P
问题内容: 我想扩展,默认情况下是,以检查位于此处的XML文件。 由于我有一个多模块maven项目(> 100个模块,嵌套),其中很多没有文件夹,而大多数甚至没有文件夹(例如,对于Packaging = pom ),因此,看似简单的任务却变得非常困难。)。如果设置为或,则会导致生成错误: sonar-maven-plugin本身可以在每个模块中正确执行此操作。 我试图用正则表达式来设置,以通过切断
apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。 因此,要使用这个扩展机制,你的平台必须支持DSO特性,而且Apache httpd必须内建了mod_so模块。apxs工具能自动探测是否具备这样的条件,你也可以自己用这个命令手动探测:
我找不到任何答案,也许有人知道。我试图设置maven站点和maven javadoc插件,但这似乎是不可能的。每次我运行mvn站点:run时,我都会得到这个堆栈跟踪: 而在maven网站上我得到了一堆包不存在的错误。这东西似乎根本不起作用,我尝试了各种配置。前一段时间,我也花了很多时间来尝试这件事的工作,并成功地添加了一些,但它现在不工作。我看起来不可能设置,所以我需要一些帮助,也许我错过了什么。