【maven】文档 [不断补充中...]

发布于:2022-10-16 ⋅ 阅读:(582) ⋅ 点赞:(0)

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 后查看

网站公告

今日签到

点亮在社区的每一天
去签到