搭建maven私服

maven

maven简介

什么是maven?

搭建maven私服_第1张图片

Maven这个单词来自于意第绪语(犹太语),意为知识的积累

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

maven发展历史

搭建maven私服_第2张图片

maven的体系结构

搭建maven私服_第3张图片

maven安装配置

maven下载与配置

下载maven

访问网站 https://maven.apache.org

搭建maven私服_第4张图片

搭建maven私服_第5张图片

搭建maven私服_第6张图片

image-20221225194143162 搭建maven私服_第7张图片

搭建maven私服_第8张图片

maven本地配置

打开conf\settings.xml文件

本地仓库位置

配置本地仓库的位置

<localRepository> 本地地址 <localRepository>

搭建maven私服_第9张图片

<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>C:\maven-repositorylocalRepository>
镜像配置

由于中央仓库在境外,网络访问不稳定,故在开发过程中大多配置中央仓库的镜像仓库。

搭建maven私服_第10张图片

<mirror>
  <id>aliyunmavenid>
  <mirrorOf>centralmirrorOf>
  <name>阿里云公共仓库name>
  <url>https://maven.aliyun.com/repository/publicurl>
mirror>
profile

配置maven默认使用的jdk环境。

搭建maven私服_第11张图片

<profile>
    <id>jdk-1.8id>
    <activation>
       <activeByDefault>trueactiveByDefault>
       <jdk>1.8jdk>    
    activation>
    <properties>
        <maven.compiler.source>1.8maven.compiler.source>
        <maven.compiler.target>1.8maven.compiler.target>
        <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
    properties>
profile>

idea环境安装配置maven

在idea中打开File/Settings

搭建maven私服_第12张图片

搭建maven私服_第13张图片

配置本地maven
搭建maven私服_第14张图片 搭建maven私服_第15张图片

搭建maven私服_第16张图片

maven核心思想

maven仓库

搭建maven私服_第17张图片

maven生命周期

搭建maven私服_第18张图片

maven项目对象模型(pom)

搭建maven私服_第19张图片

dependency

搭建maven私服_第20张图片

依赖Scope配置。

序列 依赖范围(Scope) 对于主代码classpath有效 对于测试代码classpath有效 被打包,对于运行时classpath有效 案例
1 compile yes yes yes log4j
2 test yes junit
3 provided yes yes servlet-api
4 runtime yes JDBC Driver Implementtion

maven私服-nexus

下载安装

下载nexus

访问官网: https://help.sonatype.com/repomanager3/product-information/download

搭建maven私服_第21张图片

由于网络不稳定,下载问题,我选择其它版本nexus-3.40.1-01-unix.tar.gz

搭建maven私服_第22张图片

上传到linux服务器

搭建maven私服_第23张图片搭建maven私服_第24张图片

搭建maven私服_第25张图片

解压并重名名

解压nexus-3.40.1-01-unix.tar.gz

tar -zxvf nexus-3.40.1-01-unix.tar.gz

搭建maven私服_第26张图片

搭建maven私服_第27张图片

nexus配置

进入nexus-3.40.1/bin文件夹

搭建maven私服_第28张图片

搭建maven私服_第29张图片
编辑nexus.vmoptions文件

根据自己机器内存大小,适当配置内存。内存太小未来启动nexus会失败。

vim nexus.vmoptions

搭建maven私服_第30张图片
配置端口

默认端口为8081,如果需要在要在文件中配置端口。(如果不需改端口,此处可以忽略)

  • 进入etc文件夹

    搭建maven私服_第31张图片
  • 修改nexus-default.properties文件

    搭建maven私服_第32张图片

    搭建maven私服_第33张图片

运行nexus

启动nexus

搭建maven私服_第34张图片

运行命令**./nexus start**

搭建maven私服_第35张图片
开放linux的8081端口
  • 检查系统开放的端口号

    firewall-cmd --list-ports

    image-20221230160447791
  • 添加8081端口

    firewall-cmd --zone=public --add-port=端口号/tcp --permanent

    image-20221230160812191
  • 重新加载防火墙

    firewall-cmd --reload

    image-20221230160826381
查看nexus的运行状态

在浏览器中输入http://102.168.0.101:8081

搭建maven私服_第36张图片

搭建maven私服_第37张图片

修改管理员密码
  • 查看管理员账户密码

    1. 进入sonatype-work\nexus3文件夹

      搭建maven私服_第38张图片
    2. 查看管理员密码

      image-20221230205629156
  • 修改管理员密码

    1. 浏览器登录nexus

      搭建maven私服_第39张图片

    2. 修改密码

      搭建maven私服_第40张图片

      搭建maven私服_第41张图片

      搭建maven私服_第42张图片

      搭建maven私服_第43张图片


配置私有仓库

nexus中默认仓库

maven-releases (Version policy=Release)默认只允许上传不带SNAPSHOT版本尾缀的包,默认部署策略是Disable redeploy 不允许重复上传相同版本号信息的jar,避免包版本更新以后使用方无法获取到最新的包。

maven-snapshots (Version policy=Snapshot)只允许上传带SNAPSHOT版本尾缀的包,默认部署策略是Allow redeploy,允许重复上传相同版本号信息的jar,每次上传的时候会在jar的版本号上面增加时间后缀信息。

maven-central 中央仓库的拷贝,如果环境可以访问中央仓库,则可以获取到相关的包,否则没用

maven-public 仓库组,不是实际个一个仓库地址,只是将现有的组合到一次,可以通过它看到所属组内全部仓库的jar信息

搭建maven私服_第44张图片

创建自定义仓库

搭建maven私服_第45张图片

搭建maven私服_第46张图片

选择maven2(hosted)

搭建maven私服_第47张图片

搭建maven私服_第48张图片

添加新建仓库到maven-public群组中
  • 选中maven-public群组,之后访问maven-public就可以访问自己的私有仓库了。

    搭建maven私服_第49张图片

  • 创建三个仓库,wnhz-repository(混合拍照&发布), wnhz-releases(发布版), wnhz-snapshots(拍照班)

    image-20231022164215854

    照片版(测试版/开发版)

    搭建maven私服_第50张图片

    发布版
    搭建maven私服_第51张图片

    混合版

搭建maven私服_第52张图片

  • 添加仓库到群组maven-public群组中

    搭建maven私服_第53张图片

在这里插入图片描述

批量上传本地文件到自定义仓库中

上传本地仓库内容到linux服务器
搭建maven私服_第54张图片

搭建maven私服_第55张图片

编辑批量上传脚本

在本地仓库上传的文件夹(maven-repository)下创建一个shell脚本,命名 localrepository.sh

  • 创建脚本

    touch localrepository.sh

    image-20221230215900056
  • 编辑脚本

    vim localrepository.sh

    #!/bin/bash
    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}/{} ;
    

    搭建maven私服_第56张图片

添加权限

给脚本localrepository.sh添加执行权限

chmod +x localrepository.sh

image-20221230220208762
导入本地仓库到nexus私有仓库

执行以下命令

./localrepository.sh -u nexus用户名 -p nexus密码 -r 仓库地址(自定义存储混合依赖的)

 ./localrepository.sh -u admin -p 123 -r http://192.168.198.128:8081/repository/wnhz-repository/

搭建maven私服_第57张图片

在这里插入图片描述

搭建maven私服_第58张图片

搭建maven私服_第59张图片

项目中引用nexus库

在maven的conf/settings.xml中配置server

在settings中配置snapshots,releases和wnhz-repository服务用户名密码

注意:id必须唯一,项目pom中引用的是这个指定id。

 <servers>
    

    
  	<server>
  		<id>wnhzid>
  		<username>adminusername>
  		<password>123password>
  	server>
    <server>
      <id>wnhz-releaseid>
      <username>adminusername>
      <password>123password>
    server>
    <server>
      <id>wnhz-snapshotsid>
      <username>adminusername>
      <password>123password>
    server>
  servers>

搭建maven私服_第60张图片

在maven中配置镜像

中央仓库的资源从阿里云访问,其它资源来自nexus私服。

搭建maven私服_第61张图片

  <mirrors>
    
   <mirror>
      <id>aliyunmavenid>
      <mirrorOf>centralmirrorOf>
      <name>阿里云公共仓库name>
      <url>https://maven.aliyun.com/repository/publicurl>
    mirror>
    <mirror>
      <id>wnhzmavenid>
      <mirrorOf>*mirrorOf>
      <name>蜗牛杭州的maven私服仓库name>
      <url>http://192.168.198.128:8081/repository/maven-public/url>
    mirror>
  mirrors>

私服访问地址从下图获取:http://192.168.198.128:8081/#browse/browse:maven-public

搭建maven私服_第62张图片

项目中配置发布管理

在项目的pom.xml文件中添加

   <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibabagroupId>
                <artifactId>druid-spring-boot-starterartifactId>
                <version>${project.druid.version}version>
            dependency>
        dependencies>
    dependencyManagement>

    <distributionManagement>
        <snapshotRepository>
            <id>wnhz-snapshotsid>
            <url>http://192.168.198.128:8081/repository/wnhz-snapshots/url>
        snapshotRepository>
        <repository>
            <id>wnhz-releasesid>
            <url>http://192.168.198.128:8081/repository/wnhz-releases/url>
        repository>
    distributionManagement>

    <repositories>
        <repository>
            <id>nexusid>
            <url>http://192.168.198.128/repository/wnhz-repository/url>
            <releases>
                <enabled>trueenabled>
            releases>
            <snapshots>
                <enabled>trueenabled>
            snapshots>
        repository>
    repositories>

部署项目

在maven中运行部署,部署(deploy)项目到私服。

搭建maven私服_第63张图片

搭建maven私服_第64张图片

项目中maven配置

继承父项目模块

<parent>
    <artifactId>wnhz-bmartifactId>
    <groupId>com.wnhz.bmgroupId>
    <version>1.0-SNAPSHOTversion>
parent>

当前模块坐标

<modelVersion>4.0.0modelVersion>
<groupId>com.wnhz.bm.commongroupId>
<artifactId>bm-commonartifactId>
<packaging>pompackaging>

packaging配置

序列 参数 解释
1 pom 表示父类型
2 jar 打包为jar包
3 war 打包为war包

module

配置项目的子模块名称

<modules>
    <module>bm-common</module>
    <module>bm-domain</module>
    <module>bm-book</module>
</modules>

properties

定义依赖的版本号

<properties>
    <maven.compiler.source>8maven.compiler.source>
    <maven.compiler.target>8maven.compiler.target>
    <druid.version>1.2.18druid.version>
properties>

<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>druid-spring-boot-starterartifactId>
    <version>${druid.version}version>
dependency>

dependencies

引入依赖

<dependencies>
    <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
    dependency>
    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>druid-spring-boot-starterartifactId>
        <version>${druid.version}version>
    dependency>
dependencies>

build

构建项目模块

插件
编译插件
 
<plugin>
    <groupId>org.apache.maven.pluginsgroupId>
    <artifactId>maven-compiler-pluginartifactId>
    <version>3.8.0version>
    <configuration>
        <source>1.8source>
        <target>1.8target>
        <encoding>${project.build.sourceEncoding}encoding>
    configuration>
plugin>
打包源码插件
   <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.8.0version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                    <encoding>${project.build.sourceEncoding}encoding>
                configuration>
            plugin>

            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-source-pluginartifactId>
                <version>2.2.1version>
                <configuration>
                    <attach>trueattach>
                configuration>
                <executions>
                    <execution>
                        <phase>compilephase>
                        <goals>
                            <goal>jargoal>
                        goals>
                    execution>
                executions>
            plugin>
        plugins>
    build>
springboot打包插件

打包将jar包放到项目的更目录out下。

搭建maven私服_第65张图片

   <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
                <configuration>
                    <outputDirectory>../../outoutputDirectory>
                configuration>
            plugin>
        plugins>
    build>

私服配置

distributionManagement

部署管理,适用于依赖上传

   <snapshotRepository>
            <id>wnhz-snapshotsid>
            <url>http://192.168.201.81:8081/repository/wnhz-snapshots/url>
        snapshotRepository>
        <repository>
            <id>wnhz-releasesid>
            <url>http://192.168.201.81:8081/repository/wnhz-releases/url>
        repository>
repositories

部署依赖下载

  <repositories>
        <repository>
            <id>nexusid>
            <url>http://192.168.201.81:8081/repository/maven-public/url>
            <releases>
                <enabled>trueenabled>
                <updatePolicy>alwaysupdatePolicy>
            releases>
            <snapshots>
                <enabled>trueenabled>
                <updatePolicy>alwaysupdatePolicy>
            snapshots>
        repository>
    repositories>

ory/wnhz-snapshots/


wnhz-releases
http://192.168.201.81:8081/repository/wnhz-releases/


#### repositories

> 部署依赖下载

```xml
  
        
            nexus
            http://192.168.201.81:8081/repository/maven-public/
            
                true
                always
            
            
                true
                always
            
        
    

你可能感兴趣的:(maven,java)