码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【编程通用工具】


    文章目录

    • maven
      • maven 基本配置
      • maven pom设置
        • maven 模块管理配置
        • type
        • scope
        • optional
        • build/resources
      • lifecycle与Goal
        • maven deploy
      • 继承
      • 插件
        • maven-shade-plugin
        • Apache Maven Assembly Plugin
    • 问题
    • Git
      • 教程
      • 具体用法
        • 标签
        • 分支
        • 删除
        • 版本管理
      • 配置
      • git-flow
    • protobuf
    • RPC

    maven

    Maven in 5 Minutes
    我是在windows环境里做的实验,在mvn package的时候报错了,这有可能是因为我没有配置JAVA_HOME,因为jdk8会给你自动配置一个C:\Program Files (x86)\Common Files\Oracle\Java\javapath放在path里,这样是不行的,要配置JAVA_HOME


    maven(一) maven到底是个啥玩意~
    把create换成generate


    Maven 教程

    maven 基本配置

    Scala and Maven
    Maven的setting文件,一个在MVN_HOME/conf/setting.xml,如果USER_HOME/.m2/setting.xml存在,那么就优先读取这个

    maven全局配置文件settings.xml详解

    Profiles就是个性配置,感觉最重要的就是repositories 和pluginRepositories,可以设置多个repositories 和pluginRepositories,如果某个包在第一个里面没找到就去第二个里面找
    Profiles就是个性配置,里面可以有好多个profile,每个profile里都可以有各种各样的配置参数,比如下面的例子就是有一个profile,这个profile的名字叫做nexus,
    activeprofiles和activation是用来激活某个profile的,我猜Activation是放在profile中的一个参数,下面的例子里用了activeprofiles表示,nexus这个profile被激活,里面的配置参数被启用

    <settings>
      <offline>falseoffline>
    
      <proxies>
        <proxy>
          <id>web httpid>
          <active>trueactive>
          <protocol>httpprotocol>
          <host>my.proxy.comhost>
          <port>1234port>
          <nonProxyHosts>localhost|127.0.0.1nonProxyHosts>
        proxy>
      proxies>
      <profiles>
        <profile>
          <id>nexusid>
          <repositories>
            
    		<repository>
              <id>centralid>
              <url>http://repo1.maven.org/maven2url>
              <releases>
                <enabled>trueenabled>
              releases>
              <snapshots>
                <enabled>trueenabled>
              snapshots>
            repository>
            <repository>
              <id>my-centralid>
              <url>http://my.maven.com/privateurl>
              <releases>
                <enabled>trueenabled>
              releases>
              <snapshots>
                <enabled>falseenabled>
              snapshots>
            repository>
          repositories>
          <pluginRepositories>
    	  
    		<pluginRepository>
              <id>centralid>
              <url>http://repo1.maven.org/maven2url>
              <releases>
                <enabled>trueenabled>
              releases>
              <snapshots>
                <enabled>trueenabled>
              snapshots>
            pluginRepository>		
            <pluginRepository>
              <id>my-centralid>
              <url>http://my.maven.com/privateurl>
              <releases>
                <enabled>trueenabled>
              releases>
              <snapshots>
                <enabled>falseenabled>
              snapshots>
            pluginRepository>
          pluginRepositories>
        profile>
      profiles>
      <activeProfiles>
        <activeProfile>nexusactiveProfile>
      activeProfiles>
    settings>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68

    Maven镜像地址大全,Maven镜像地址配置示例
    Maven:mirror和repository 区别

    maven pom设置

    Maven:repositories、distributionManagement、pluginRepositories中repository的区别
    setting.xml的mirror、mirrorOf和pom.xml的repositories、repository的关系关联*
    个人觉得一个好的习惯是在pom里指定repository,尽量少在setting里设置repository,保证项目之间互不干扰。

    maven 模块管理配置

    dependencyManagement与dependencies区别
    关于maven自动处理版本冲突的原则和调整依赖的方法
    What is the difference between “pom” type dependency with scope “import” and without “import”?
    type为pom只能用在dependencyManagement,功能就相当于把另一个工程的dependencies放进了本工程的dependencyManagement里,省的自己再在dependencyManagement写一大堆了,在之后的dependencies标签里就可以不写版本了。

    type

    maven依赖中如何理解<type>pom/jar/…</type>、<scope>compile/import…</scope>等?

    • 需要先理解package:取值一般是pom、jar,默认是jar,如果当前工程是jar的话,使用mvn package会输出一个jar包;如果是pom,那么只会认为这个pom文件记录了一些依赖,使用mvn package并不会输出jar包,举个例子,你可以看你Maven仓库的下面这个工程,他是一个这个工程的package就是个pom,含义是,这个pom只是记录了本mvn工程引入了各种引入的坐标,但并不会作为一个完整的jar包使用;
    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-dependenciesartifactId>
                    <version>2.2.2.RELEASEversion>
    
    • 1
    • 2
    • 3
    • 然后理解pom:需要在与import一起使用,如果需要依赖一个package必须也得是pom的父工程,那就一定要指定类型为pom ;意为本工程只需要父工程的pom文件里记录的坐标放进本工程的dependencyManagement,供本工程的子工程使用,而并不需要依赖这个父工程本身的jar包或者代码;
      举个例子,现在在里有spring-boot-dependencies这个工程,类型为jar,那么子工程在dependencies如果使用了这个spring-boot-dependencies,那么子工程会将这个坐标作为一个jar来看,但这是没有意义的,因为这个spring-boot-dependencies本身不会产生一个jar包。而且此时打mvn package就会报错;
      说白了,在dependencyManagement里,类型是jar,就是说即需要父工程的pom作为子工程的参照,也需要这个工程的jar包(也就是代码);类型是pom,就是说只需要父工程的pom作为子工程的参照

    scope

    When would I need maven dependency with runtime scope
    scope指的是引入jar包的生效范围。诚然,在pom里写scope为runtime的包,改为compile也能用,但区分runtime和compile更多是为了规范性。mysql-connector-java为例,他的scope一般为runtime,在开发过程中使用的接口都是jdk的类,因为如果scope为runtime,代码里是无法引入与使用mysql-connector-java里的类的(编译报错),因为这个包的生效范围最多只到runtime。
    (这个类之所以在运行是可用,是因为java的spi机制,甚至你手动用class加载也是能加载的,但编译期就是无法使用)

    Maven的Scope区别笔记
    讲一下runtime,一般这种类库都是接口与实现相分离的类库,这句话很重要,例如mysql的jdbc库,是java提供了接口,然后mysql去实现了这个接口。你可以看到在用jdbc链接mysql的库的时候,引入的包都是java内置的接口类,并没有mysql-connector-java,它是通过类加载器加载进去的,因此,mysql-connector-java这个包里的具体实现类是在运行期使用的,在编译器没有被使用。因此在pom里它是runtime

    optional

    Maven optional关键字透彻图解

    build/resources

    Maven项目中resources配置总结
    maven Resources标签的使用
    resouces标签作用:在打包成jar的时候,控制resouces文件夹里的资源文件,被放在哪里,默认情况下,resouces文件夹里的内容会被放在jar里的目录里,
    在这里插入图片描述

    下面resouces配置,会将resouces的输出目录移动至上一层,而既然移动到上一层,这个xml配置就不会被放进jar里,而是放在了target/class/…/conf(从文件内容来看,jar等同于target/classes)
    在这里插入图片描述
    另注:他和maven-assembly可共存,毕竟一个输出jar,一个是输出合并打包文件。
    maven的filters目录详解

    lifecycle与Goal

    Maven生命周期(clean+site+default)
    Maven 构建生命周期
    Maven插件(plugin)
    mvn install、package都是生命周期的一种,生命周期只是一个方便developer理解的抽象概念而已,每个生命周期由多个goal顺序执行而组成,例如mvn clean执行的就是顺序执行clean里的pre-clean和clean两个goal,而每个goal具体是由plugin负责真正执行的。

    Maven的生命周期和目标

    maven deploy

    Maven deploy配置方法详解
    mvn deploy部署到nexus的教程详解
    Maven - "maven-source-plugin"的使用
    【Maven】Snapshot和Release版本的区别
    依赖snapshot的时候需要注意使用mvn -U

    继承

    IDEA多模块maven项目子模块无法引用父模块依赖
    idea踩坑 maven子项目没有继承父项目依赖
    用dependency:tree查看maven引入jar包的传递依赖
    Maven:分析剔除无用的jar引用

    插件

    maven-shade-plugin

    解决 jar 包冲突的神器:maven-shade-plugin
    Maven打包之maven-shade-plugin
    maven-plugin-shade 详解
    Apache maven shade plugin使用说明

    Apache Maven Assembly Plugin

    Assembly config

    Maven 教程(20)— 使用maven-assembly-plugin插件来定制化打包

    问题

    解决Error:scalac:error while loading ,Error accessing
    maven编译问题之 -The POM for XXX is invalid, transitive dependencies (if any) will not be available
    【Maven】maven _remote.repositories 导致的local repository有依赖仍报找不到依赖问题
    maven本地仓库中存在jar包,但编译不成功,显示jar包不存在
    maven can’t find my local artifacts

    Git

    教程

    git 简明教程
    菜鸟教程 git 适合入门
    git 廖雪峰 比菜鸟教程写得深
    包含大多数操作,工作区就是此时代码的区域,暂存区就是add,本地仓库就是commit
    git官网
    对于windows操作系统,有setup版本和Windows Portable版本,Windows Portable版本可以看做一个压缩文件,将其解压到目标文件夹之后,只需要将该文件夹下的bin添加到环境变量即可在命令行使用git了


    程序员必备基础:Git 命令全方位学习

    • git的本地分为三大部分,working tree就是工作目录,当前编辑的文件;stage(对应.git/index)为暂存区;本地仓库,即.git文件夹。add是将修改记录在暂存区;commit是把暂存区的记录提交到本地版本库;
    • 除了本地部分,还有远程仓库,git remote add origin xxx@xxx的功能是为当前的这个working tree注册一个远程仓库,别名为origin,这个origin只对当前working tree有效,会被记录在.git文件夹里
      对于远程仓库的理解不用想太多,就把它看成和本地仓库一样的东西,比如将本地仓库的分支a和分支b合并过程,与本地仓库的分支a和远程仓库分支c合并,这两种操作其实是没啥差别的。目前为止需要注意的,就是本地对远程仓库的记录,与远程仓库本身实际的情况会有一个同步的问题,所以就需要利用git fetch,将远程仓库同步到本地记录的远程仓库。
    • git fetch origin master操作是将远端的仓库的master分支拉取到本地记录的远端仓库
    • 进行整合的方式就是git merge origin/master,即将origin/master合并到此时的分支
    • git的版本回退使用的是git reset --hard会更新stage和working tree;
    • git push origin jackson的含义是将当前分支推送到origin/jackson分支,如果远端不存在对应分支的话,会在远端创建origin/jackson分支,但这个语句不会设定追踪;git push --set-upstream origin jackson的含义是将当前分支推送到origin/jackson分支 并且让当前分支去追踪远程的origin/jackson分支,也可以使用git push -u与--set-upstream一样

    具体用法

    git add -A 和 git add . 的区别
    Git忽略提交规则 - .gitignore配置运维总结

    标签

    Git 中切换到某标签

    分支

    Git 合并远程分支


    git pull命令的用法
    pull就是从远程仓库的某个分支拉取合并到本地分支git pull origin 5意思就是从origin的5分支拉取代码同步到此时的分支
    详解git pull和git fetch的区别:
    Git中的‘HEAD’是什么?- Git名词解释
    严格来说,head指向的是当前branch下的上次提交的结果
    git-merge完全解析
    git merge origin/5的含义是将origin/5分支合并到当前分支
    git查看远程分支,并且切换到远程的分支
    如果要追踪远程的分支,那就必须要在本地构建一个分支去追踪这个分支。
    如果在本地新建了一个分支a,想把这个分支推送到远端,但此时远端是不存在该分支的,所以要指定远端分支git push origin a,然后还要按照下面的方法设置本地关联远程分支
    git branch --set-upstream 本地关联远程分支
    GIT如何查看本地分支与远程分支的关联配置
    关联了之后,如果push和fetch不指定分支,那么就会使用upstream的分支,查看所有分支并查看远程本地的对应关系git branch -avv
    git删除远程分支和本地分支
    彻底搞懂 Git-Rebase
    error: 没有父提交的情况下不能 ‘fixup’ 您可以用 ‘git rebase --edit-todo’ 修正,然后执行 ‘git rebase --continue’。或者您可以用 'git

    删除

    git删除本地和远程文件
    (转)git从版本库中删除文件但不删除物理文件
    如何删除GIT中的.DS_Store
    Github删除某个文件的所有提交记录

    版本管理

    Git恢复之前版本的两种方法reset、revert(图文详解)
    git stash详解
    执行stash后,本地工作区会回复到上次commit的状态。至于文中提到的pop的顺序,可以看到test2被先pop出来,test1被留下了
    git 放弃本地修改

    配置

    配置多个SSH-Key
    管理git生成的多个ssh key
    还可以在config文件里为每个远端仓库指定接口Port 22默认也是22,可以不改
    Git配置用户名和密码

    git-flow

    git-flow 的工作流程
    这个git-flow就是把多个git命令包了起来

    protobuf

    Protobuf 终极教程
    [译]Protobuf 语法指南

    RPC

    花了一个星期,我终于把RPC框架整明白了!

  • 相关阅读:
    Vue 组件化
    vue2 集成 Onlyoffice
    总结算法题中一些常用的Java方法
    每日shell脚本之mysql健康查询
    [ 车牌识别 License Plate Detection and Recognition ]
    mEngine.hasImplicitBatchDimension
    云计算基础-存储基础
    MAX30102驱动
    Git协同开发解决冲突与Pr、Mr及路飞项目主页搭建
    idea使用debug无法启动,使用run可以启动
  • 原文地址:https://blog.csdn.net/dominic_z/article/details/126315121
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号