标签归档:maven

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构建时会自动忽略空目录,以下插件配置可将空目录保留: