Maven

作者: 挑战_bae7 | 来源:发表于2020-12-24 17:57 被阅读0次

    1.安装maven

    Maven是一个项目管理和综合工具。Maven提供给开发人员构建一个完整的生命周期框架。
    开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期。
    Apache的开源项目主要服务于Java平台的构建、依赖管理、项目管理。
    Project Object Model,项目对象模型。通过xml格式保存的pom.xml文件。该文件用于管理:源代码、配文
    件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。该文件是由开发维护,我们运维人员可以不用去关心。
    mvn package #会去maven的中央仓库去下载需要的依赖包和插件到.m2目录下
    
    官网:             http://maven.apache.org/download.cgi
    清华镜像:        https://mirrors.tuna.tsinghua.edu.cn/apache/maven/
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
    rpm -ivh jdk-8u251-linux-x64.rpm 
    tar xf apache-maven-3.3.9-bin.tar.gz -C /usr/local/
     ln -s /usr/local/maven-3.3.9 /usr/local/maven
    cat /etc/profile.d/maven.sh 
    export PATH=/usr/local/maven/bin/:$PATH
    source /etc/profile.d/maven.sh
    mvn -v 查看版本
    

    2.编译测试

    #上传一个简单的java项目包hello‐world.tar.gz进行解压
    tar xf hello-world.tar.gz 
    cd hello-world/
    validate(验证):     验证项目正确,并且所有必要信息可用。
    compile(编译):    编译项目源码
    test(测试):         使用合适的单元测试框架测试编译后的源码。
    package(打包):     源码编译之后,使用合适的格式(例如JAR格式)对编译后的源码进行打包。
    integration‐test(集成测试): 如果有需要,把包处理并部署到可以运行集成测试的环境中去。
    verify(验证):     进行各种测试来验证包是否有效并且符合质量标准。
    install(安装):     把包安装到本地仓库,使该包可以作为其他本地项目的依赖。
    deploy(部署):     在集成或发布环境中完成,将最终软件包复制到远程存储库,以与其他开发人员和项目共享。
    mvn clean (清除) : 清除上次编译的结果
    #测试
    [root@jenkins hello-world]# mvn test
    #打包
    [root@jenkins hello-world]# mvn package    #会去maven的中央仓库去下载需要的依赖包和插件到.m2目录下
    #打包结果
    [root@jenkins hello-world]# ll target/
    total 8
    drwxr-xr-x 3 root root   17 12月 24 16:17 classes
    -rw-r--r-- 1 root root 3132 12月 24 16:21 hello-world-1.0-SNAPSHOT.jar
    drwxr-xr-x 2 root root   28 12月 24 16:21 maven-archiver
    drwxr-xr-x 3 root root   35 12月 24 16:17 maven-status
    -rw-r--r-- 1 root root 2874 12月 24 16:21 original-hello-world-1.0-SNAPSHOT.jar
    drwxr-xr-x 2 root root  125 12月 24 16:17 surefire-reports
    drwxr-xr-x 3 root root   17 12月 24 16:17 test-classes
    

    3.maven使用阿里云

    vim /usr/local/maven/conf/settings.xml    </mirror>模块前插入
    <mirror>
          <id>alimaven</id>
          <name>aliyun maven</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
          <mirrorOf>central</mirrorOf>        
     </mirror>
    mvn package  测试看到比之前的快
    

    4.maven使用私服

    https://help.sonatype.com/repomanager3/download/download-archives---repository-manager-3
    wget https://download.sonatype.com/nexus/3/nexus-3.13.0-01-unix.tar.gz
    rpm -ivh jdk-8u251-linux-x64.rpm 
    tar xf nexus-3.13.0-01-unix.tar.gz -C /usr/local/
    ln -s  /usr/local/nexus-3.13.0-01/  /usr/local/nexus
    /usr/local/nexus/bin/nexus start 启动
    ss -lntup|grep :8081
    http://192.168.122.104:8081 admin admin123
    
    私服拉取换成阿里.png
    vim /usr/local/maven/setting.xml  插入在</servers>前面
     <servers>
        <server>
          <id>releases</id>
          <username>admin</username>
          <password>admin123</password>
        </server>
        <server>
          <id>snapshots</id>
          <username>admin</username>
          <password>admin123</password>
        </server>
      </servers>
    
    vim /usr/local/maven/conf/settings.xml    </mirror>模块前插入
    <mirror>
          <id>nexus</id>
          <name>aliyun maven</name>
          <url>http://192.168.122.104:8081/repository/maven-central/</url>
          <mirrorOf>*</mirrorOf>        
     </mirror>
    
    vim /usr/local/maven/conf/settings.xml     </profiles>模块前插入
      <profile>
          <id>nexusTest</id>
          <repositories>
            <repository>
              <id>local-nexus</id>
              <url>http://192.168.122.104:8081/repository/maven-central/</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
              </snapshots>
            </repository>
          </repositories>
        </profile>
      </profiles>
    
    vim /usr/local/maven/conf/settings.xml     </settings>模块前插入
    <activeProfiles>
     <activeProfile>nexusTest</activeProfile>
      </activeProfiles>
    
    图片.png
    java打包
    cd  hello-world
    mvn clean
    mvn package  第一次很慢 以后会很快
    INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1.458 s
    [INFO] Finished at: 2020-12-28T11:45:44+08:00
    [INFO] Final Memory: 17M/185M
    
    java项目
    https://gitee.com/zchuanzhao/jeesns.git
    jenkins配置
    使用脚本推送到tomcat上
    
    java.png
    maven.png
    图片.png
    图片.png

    5.上线java程序

    Hello World
    
    图片.png
    图片.png
    图片.png
    [root@jenkins hello-world-war]# cat /scripts/java_devops_tag_rollback.sh
    #/bin/bash
    ##WORKSPACE是jenkins内置变量打印当前项目目录
    Code_Dir=$WORKSPACE
    Web_Dir=/soft/code/apache-tomcat-9.0.41/webapps
    Web_IP="192.168.122.106"
    Date=`date +%F-%H-%M-%S`
    Time=$Date-${git_version}
    
    get_code(){
    cd $Code_Dir 
    }
    
    scp_web_server(){
    for Ip in $Web_IP
    do
    scp target/*.war $Ip:$Web_Dir/ROOT-$Time.war
    ssh root@$Ip "cd $Web_Dir && rm -rf ROOT &&ln -s ./ROOT-$Time ROOT"
    ssh root@$Ip "cd $Web_Dir && ../bin/catalina.sh stop && ../bin/catalina.sh start"
    done
    }
    deploy(){
         get_code
         scp_web_server 
    }
    rollback() {
    for Ip in $Web_IP
    do
    back_file=`ssh root@$Ip "cd $Web_Dir && find ./ -maxdepth 1 -type d -name "ROOT-*-${git_version}""`
    ssh root@$Ip "cd $Web_Dir && rm -rf ROOT &&ln -s $back_file ROOT"
    ssh root@$Ip "cd $Web_Dir && ../bin/catalina.sh stop && ../bin/catalina.sh start"
    done
    }
    ###GIT_COMMIT GIT_PREVIOUS_SUCCESSFUL_COMMIT 成功的hash
    if [ ${GIT_COMMIT} ==  ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
        echo "你已经部署过此版本 ${git_version}"
        rollback
    else
        deploy
     fi
    

    相关文章

      网友评论

          本文标题:Maven

          本文链接:https://www.haomeiwen.com/subject/mejmnktx.html