1. 环境搭建
1.1 maven安装
linux
Ubuntu
apt update
apt install openjdk8-jre-headless openjdk8-jdk-headless
apt install maven
settings.xml
标签 | 作用 | |
---|---|---|
mirror | mirrorOf | 关联多个仓库,用,分隔 *:所有仓库 !<仓库>:排除该仓库 |
url | 仓库地址,一般是仓库组地址 | |
profile 优先级高于pom.xml |
repositories | 远程仓库配置 |
pluginRepositories | 远程插件仓库配置 | |
activeProfiles | 激活profile,配置对应的profile ID | |
server | 连接远程仓库的验证,配置用户名和密码 | |
localRepository | 本地仓库目录 |
模板
环境变量配置:
export M2_HOME=/data/.m2
export MAVEN_MIRROR=http://192.168.0.104:8081/repository/evef-group/
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>${env.M2_HOME}/repository</localRepository>
<mirrors>
<mirror>
<id>mirror</id>
<mirrorOf>*,!evef-releases,!evef-snapshots</mirrorOf>
<name>mirror</name>
<url>${env.MAVEN_MIRROR}</url>
</mirror>
</mirrors>
<servers>
<server>
<id>evef-group</id>
<username>evef</username>
<password>123456</password>
</server>
</servers>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>aliyun-proxy</id>
<url>${env.MAVEN_MIRROR}</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>maven-central</id>
<url>${env.MAVEN_MIRROR}</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>evef-releases</id>
<url>${env.MAVEN_MIRROR}</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>evef-snapshots</id>
<url>${env.MAVEN_MIRROR}</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>aliyun-proxy</id>
<url>${env.MAVEN_MIRROR}</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>maven-central</id>
<url>${env.MAVEN_MIRROR}</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
清理无用jar包脚本
linux版
#! /bin/bash
dir=/usr/local/repository
function fun(){
for item in `ls $1`
do
if [[ "$1"/"$item" == *.lastUpdated ]]; then
echo clean $1
rm -rf $1
else
if [ -d $1"/"$item ]; then
fun $1"/"$item
fi
fi
done
}
fun $dir
window版
cls
@ECHO OFF
SET CLEAR_PATH=C:
SET CLEAR_DIR=C:\Users\even\.m2\repository
color 0a
TITLE ClearLastUpdated For Windows
GOTO MENU
:MENU
CLS
ECHO.
ECHO. * * * * ClearLastUpdated For Windows * * * *
ECHO. * *
ECHO. * 1 清理*.lastUpdated *
ECHO. * *
ECHO. * 2 查看*.lastUpdated *
ECHO. * *
ECHO. * 3 退 出 *
ECHO. * *
ECHO. * * * * * * * * * * * * * * * * * * * * * * * *
ECHO.
ECHO.请输入选择项目的序号:
set /p ID=
IF "%id%"=="1" GOTO cmd1
IF "%id%"=="2" GOTO cmd2
IF "%id%"=="3" EXIT
PAUSE
:cmd1
ECHO. 开始清理
%CLEAR_PATH%
cd %CLEAR_DIR%
for /r %%i in (*.lastUpdated) do del %%i
ECHO.OK
PAUSE
GOTO MENU
:cmd2
ECHO. 查看*.lastUpdated文件
%CLEAR_PATH%
cd %CLEAR_DIR%
for /r %%i in (*.lastUpdated) do echo %%i
ECHO.OK
PAUSE
GOTO MENU
1.2 搭建私服nexus
添加仓库
配置->Blob store 创建新存储空间
配置->Repositories
中央仓库
maven2(proxy)
输入:
name
代理地址:
如阿里云仓库:https://maven.aliyun.com/repository/public
新建的空间Blob store
本地仓库
maven2(hosted)
输入:
name
新建的空间Blob store
仓库组
maven2(group)
输入:
name
新建的空间Blob store
添加组成员,记得按优先读取的顺序添加
导入本地仓库包
创建新库
类型:maven(hosted)
名称:local-repository
Maven 2
Version policy: Mixed
Hosted:
Deployment policy:
Allow redeploy
压缩本地库传到服务器
如 :
unzip repository.zip -C /usr/local/nexus/local/
创建批量导入脚本
cd /usr/local/nexus/local/
vim mvimport.sh
#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line params
while getopts ":r:u:p:" opt; do
case $opt in
r) REPO_URL="$OPTARG"
;;
u) USERNAME="$OPTARG"
;;
p) PASSWORD="$OPTARG"
;;
esac
done
find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
执行
chmod +x /usr/local/nexus/local/mvimport.sh
./mvimport.sh -u admin -p admin123 -r http://ip:8081/repository/local-repository/
2.mvn常用选项
option | 说明 |
---|---|
-U | 强制刷新本地仓库不存在release版和所有的snapshots版本 |
-DskipTests | 忽略测试目录 |
help:system | 查看系统变量和环境变量 |
示例
打包
mvn clean package -U -DskipTests
安装本地包
mvn install:install-file
-DgroupId=org.csourse
-DartifactId=fastdfs_client_xg
-Dversion=1.25
-Dpackaging=jar
-Dfile=
部署本地包
mvn deploy:deploy-file
-DgroupId=com.xxx
-DartifactId=xxx
-Dversion=1.0
-Dpackaging=jar
-Durl=http://ip:port/repository/maven-releases/
-DrepositoryId=maven-releases
-Dfile=dir/xxx.jar
目标全栈工程师,不间断更新分享技术笔记API文档,追求简明扼要,以最短时间帮你入门了解各种技术
有帮助到你的话,记得一定关注点赞收藏一键三连,同一篇文章我会不间断更新补充,有问题欢迎留言讨论
本文含有隐藏内容,请 开通VIP 后查看