intellij idea 管理module和project,以及git管理项目

intellij idea 管理module和project,以及git管理项目

introduction

这篇笔记主要包括两部分内容,第一部分是介绍idea如何操作project和module。第二部分则是创建git项目,然后idea中导入项目,然后创建多个module,以及一些基础的add,commit,push操作。
下面的git操作适用于github和gitlab。
两者没太多本质区别。

  1. 先说一下相同点,二者都是基于web的Git仓库,在很大程度上GitLab是仿照GitHub来做的,它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。
  2. GitHub作为开源代码库及版本控制系统,拥有超过900万的开发者用户,目前仍然是最火的开源项目托管系统。GitHub同时提供公共仓库和私有仓库,但如果要使用私有仓库,是需要付费的。
  3. 而GitLab解决了这个问题,你可以在上面创建私人的免费仓库。
  4. GitLab让开发团队对他们的代码仓库拥有更多的控制,相比于GitHub,它有不少的特色:
  5. 允许免费设置仓库权限;允许用户选择分享一个project的部分代码;允许用户设置project的获取权限,进一步的提升安全性;可以设置获取到团队整体的改进进度;通过innersourcing让不在权限范围内的人访问不到该资源。
  6. 从代码私有性方面来看,有时公司并不希望员工获取到全部的代码,这个时候GitLab无疑是更好的选择。但对于开源项目而言,GitHub依然是代码托管的首选。

idea的project &module

project & module 概念

在 IntelliJ IDEA 中,没有类似于 Eclipse 工作空间(Workspace)的概念,而是提出了Project和Module这两个概念。接下来,就让我们一起看看 IntelliJ IDEA 官方是如何描述两者的吧!对于 Project,IntelliJ IDEA 官方是这样介绍的:
A project is a top-level organizational unit for your development work in IntelliJ IDEA. In its finished form, a project may represent a complete software solution. A project is a collection of:

Your work results: source code, build scripts, configuration files, documentation, artifacts, etc.
SDKs and libraries that you use to develop, compile, run and test your code.
Project settings that represent your working preferences in the context of a project.
A project has one or more modules as its parts.

对于 Module,IntelliJ IDEA 官方是这样介绍的:

A module is a part of a project that you can compile, run, test and debug independently.
Modules are a way to reduce complexity of large projects while maintaining a common (project) configuration.
Modules are reusable: if necessary, a module can be included in more than one project.
通过上面的介绍,我们知道:在 IntelliJ IDEA 中Project是最顶级的结构单元,然后就是Module,一个Project可以有多个Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分的,比如:user-core-module、user-facade-module和user-hessian-module等等,模块之间彼此可以相互依赖。通过这些Module的命名可以看出,它们都是处于同一个项目中的模块,彼此之间是有着不可分割的业务关系的。

open project 、new project

  1. 路径: File -> open project(open) 选择一个项目;项目一般带.idea文件。如果是一个git后的project,直接open即可。
  2. 如果自己新创建一个project,则需要 File -> new project.
  3. 或者open exist project等。

增加module

如果有了project了,剩下的就是导入module或者new module了。
方法: 直接右键project,然后用new module。然后写入 groupid和artifactid。就在project里建立了。

如何在当前windows下面新增module

注意: 选择File-> project structure -> 选择+; 这时候就出现了 new module和import module,就可以操作了。

git project

ssh配置

这里我们要做的事情就是分别对githubn和gitlab生成对应的密钥(默认情况下本地生成的秘钥位于/Users/用户名/.ssh/),并且配置git访问不同host时访问不同的密钥,流程如下:
1、 在gitbash中使用ssh-keygen -t rsa -C “公司邮箱地址”生成对应的gitlab密钥:id_rsa和id_rsa.pub
2、 将gitlab公钥即id_rsa.pub中的内容配置到公司的gitlab上。

利用gitlab创建一个项目

  1. 打开公司或者开源的gitlab地址,找到new project,输入project name和description就可以了。这时候我们创建了一个空的gitlab project。
  2. 然后到我们的bash客户端进行操作。操作命令如下:
1084  git clone [email protected]/project-name.git
 1085  ls
 1086  cd project-name
 1087  ls
 1088  touch README.md
 1089  ls
 1090  vi README.md
 1091  ls
 1092  git add README.md
 1093  git commit -m "add readme"
 1094  git push -u origin master

 

这时候我们就把gitlab project 弄到了本地并加入了readme.md文件,基本上后续就可以导入idea开始操作了

导入idea操作项目

非常容易,File->open-> 找到 project-name打开即可。后续new module。

idea 同步

  1. add 把这个目录加入到了本地项目(其实是工作空间到缓存区)
  2. commit 提交(缓存区到本地仓库)
  3. push 发布到服务器(本地仓库到远程服务器仓库)
    这是几个主要的命令。后续可以慢慢补进来。
    intellij idea 管理module和project,以及git管理项目

summary

  1. ssh-key的作用是产生对公司邮箱的加密结果,产生了一个私钥和一个公钥,任何公钥加密之后,我们用私钥解密,从而验证是否是这个邮箱。从而git操作的时候无需验证用户信息,是非常好的功能。
  2. gitlab和github,都是git仓库,各有特点;gitlab更自由,github更大。 前者是google系;后者被微软收购,个人有点心虚其发展,毕竟被公司主导的开源有一些精神互斥。违背了free的灵魂。
  3. 简单而言, idea里,project是一个工程,里面有很多module; 类似eclipse的workspace里面有很多project是一样的概念。 module是独立运行的项目模块。
  4. add(加入缓存); commit(加入本地仓库); push(发到远程仓库)
  5. module new/import 命令多用;
  6. 多用File -> project structure.
  7. create project 是在gitlab界面操作; 然后bash命令行导出; 最后用idea open出来,然后自己new module开始撸代码,好了push过去。多人的话先pull在push。

参考

  1. https://segmentfault.com/a/1190000014626841#articleHeader1
  2. https://www.oschina.net/news/96768/github-vs-gitlab
  3. https://www.jianshu.com/p/3f1c7291f015
  4. https://blog.csdn.net/qq_35246620/article/details/65448689
  5. https://blog.csdn.net/u013252047/article/details/78305014