作者归档:Sunshow

WordPress 4.0

虽然已经基本处在无内容更新的状态,还是升级了,想想也活了好多年了……且行且珍惜……

Maven Tips

Nexus

使用本地代理仓库

Nexus配置好后会默认有一个Maven Central仓库的Proxy,将自己的项目配置成使用代理

将插件仓库也配置成使用本地代理

调整Nexus缓存时间

由于国内访问Maven仓库很卡,容易发生网络故障导致Nexus缓存了未找到记录,可在Nexus后台将对应仓库的Not Found Cache TTL改成一个较短的值(例如5分钟)

为不同的开发环境创建不同的仓库

通常一个项目在不同的环境下存在不同的版本,本文创建dev、qa、production三个仓库并演示如何通过变量来选择使用哪个仓库

使用变量

使用不同的profile定制变量

以下配置声明了dev、qa、production三个profile,并分别定义了branch和skipTest两个变量,且将dev置为默认激活的profile:

命令行可通过-P参数来指定使用不同的profile,例如:

通过变量声明仓库

在Central仓库基础上加入

禁用仓库中Snapshot版本的唯一版本号

发布

配置deploy仓库

以配置snapshotRepository为例:

配置deploy账号

编辑文件:

文件内容如下:

常规发布

通过前两处配置,已经可以正常发布:

跳过发布

通常对于J2EE的WAR项目,只需要编译打包,而不需要将WAR文件发布到仓库中,通过配置maven-deploy-plugin跳过发布环节:

打包额外的jar

通过maven-jar-plugin可以在项目中打包出更多的自定义jar包:

可通过配置多个execution并为其指定不同的id来打出更多的jar

注意:此方式打出的jar不会在deploy时发布到仓库中,而通过classfier方式打出的jar会发布,请注意此区别

以上两种方式在编译期都可以做到在target目录输出jar包的效果

发布额外打包的jar并指定自定义POM

以下配置将当前构建跳过发布,并打包额外的jar,然后为这个jar指定自定义的POM信息后上传至指定仓库:

包含空目录

Maven构建时会自动忽略空目录,以下插件配置可将空目录保留:

nginx反向代理配置keepalive

有个项目上的Keep-Alive配置一直不起作用,检查了很久代码找不到问题,然后灵光一现想到应该是反向代理配置的问题

即:client—–nginx proxy—–real server

client配置了使用keepalive,real server也支持,问题就在于nginx代理没配置对

配置方式如下:

1、配置upstream,keepalive需要在upstream里配置


upstream http_backend {
server 127.0.0.1:8080;

keepalive 16;
}

2、修改proxy设置,proxy_http_version必须设置为“1.1”,且需要清空Connection头


server {

location /http/ {
proxy_pass http://http_backend;
proxy_http_version 1.1;
proxy_set_header Connection “”;

}
}

参考资料:http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive

解决nginx的404页面使用SSI时循环嵌套的问题

问题场景:

1、nginx配置了404页面且指向一个使用了SSI include的页面(例如:404.shtml)
2、由于配置等原因,404.shtml中include的内容也不存在(也返回404)

造成结果:
request->404->redirect to 404.shtm->include a 404.shtml->include…
从而导致所有nginx的工作进程都被此请求的死循环block住

解决办法:

参考nginx SSI的文档,利用block语句和include语句中的stub属性:

stub — The name of the block to use as a default if the request is empty or returns an error.

首先在404.shtml中定义一个block:


SSI Not Found

然后在需要include的地方使用stub将include出错时的内容指向上面定义的block:


IntelliJ IDEA控制台中文乱码

貌似是升级12.1之后开始的,之前中文系统没有问题

参考《IntelliJ IDEA中文乱码解决办法》,原先中文系统没问题是因为默认加入了“-Dfile.encoding=GB2312”
而在更新到12.1之后,IDEA默认加入了“-Dfile.encoding=UTF-8”,所以导致了乱码问题突然出现

解决办法是在运行时的VM参数配置也加入“-Dfile.encoding=UTF-8”