Chinese Introduction

Jacky Chan edited this page Jun 19, 2013 · 10 revisions

jenv: Java enVironment Manager,管理Java的开发环境。 当你从github clone出代码后,发现build.xml, pom.xml和build.gradle等文件,你突然发现Ant,Maven和Gradle还米有安装,太悲催啦。 你发现一个gist非常不错,想要运行一下,突然发现gist是Groovy代码,靠,还没有安装Groovy。开发完成后,应用要做jdk 1.5的兼容,突然发现1.5的环境还没有。所有这些和环境相关的问题就是jenv要解决的问题,而且以一种非常简单的方式。

###为何要选择jenv? 建立一个Java的开发环境不容易,你首先要安装Jdk,接下来你要下载各种工具,如ant,maven等,接下来是各种web server,你需要浪费很多的时间在下载安装。安装的过程也非常繁复,你需要设置各种XXX_HOME,修改PATH变量等。过一段时间后,遇到工具升级,你又要重新修改XXX_HOME,调整PATH变量,又会浪费你不少时间。选择jenv后,你会拥有:

  • 安装和维护JDK的版本非常容易,不管是6,7还是8
  • 安装工具很容易,Ant、Maven、Tomcat非常简单,一个指令完成,没有XXX_HOME设置,不需要调整PATH
  • 维护版本很容易,只需要安装新版本,然后卸载老版本就可以啦,其他没有工作
  • 目录是标准和规范的,所有的candidate都安装在.jenv/candidates目录下,并且安装candidate/version进行目录划分,这对IDE也非常友好,在IDE中可以直接扫描出指定版本的jdk、tomcat、maven等等。
  • 内部仓库支持:jenv提供一套标准的仓库管理软件,你可以在公司内部搭建一个软件仓库用于管理内部的软件和工具,这点和Maven Nexus非常类似。如内部的Tomcat版本,是经过调整的,已经包含数据源、mail session等,安装该版本的Tomcat或相关工具会非常容易。
  • 整洁:.bash_profile中没有那么多设置,PATH也没有那么长,你不用再做繁琐低级的工作。

###jenv基本介绍: jenv命令主要包含三个部分: command, candidate 和 version。command为命令,如install ,list等,表示要执行某一操作; candidate就是应征者的名称,如java,ant等,表示可以被安装的开发包或者工具,是命令的操作对象;version是应征者的版本,如3.0.5, 2.2.1等,某些指令需要用到版本,如安装,设置为默认等。 所有的命令可以通过 jenv help获取。 所有的应征者的信息通过 jenv candidates获取,某一candidate的版本列表通过 jenv list canidate_name 来获取。

###jenv安装和更新 jenv的安装非常简单,你只需要打开你喜欢的控制台(xterm,iTerm等),然后输入 curl -s get.jenv.io | bash 就可以完成安装,然后你重新打开控制台或一个控制台tab或者在控制台输入 source $HOME/.jenv/bin/jenv-init.sh 即可。升级也非常简单,只需要执行 jenv selfupdate,然后重新打开terminal即可。由于jenv采用离线方式存储相关的数据,所以建议你每1-2天使用jenv repo update进行软件版本信息更新。 jenv支持bash completion,你只要在.bash_profile中添加source "$HOME/.jenv/commands/completion.sh"即可,接下来使用TAB完成command, candidate和version的自动提示。

###jenv的基本操作 jenv安装完毕后,接下来我们就需要安装Java开发环境,首先我们要了解jenv支持哪些候选者,输入 jenv candidates 就可以看到candidate列表。 接下来我们输入 jenv list java 查看可用的java版本,jenv会根据你当前操作系统情况下载对应的版本,主要是OS和32位64位的区别。执行 jenv install java 1.7.0_13 安装指定版本的Java,安装完毕后执行java --version或者echo $JAVA_HOME进行查看。

前面已经介绍啦 jenv all 是显示所有应征者列表, jenv list candidate_name 是显示某一candidate的版本列表, jenv install candidate_name version 是安装某一版本的candidate。接下来还有一个就是jenv use和jenv default。由于一个candidate有多个版本,如果我们想做版本切换,那么就使用jenv use candidate_name version,这样就可以切换到candidate的指定版本上。如果我们想设置某一版本作为candidate的默认版本,这样在系统启动后就可以直接使用默认的candidate,如对应的XXX_HOME和PATH的调整。通过 jenv default candidate_name version 就可以设置candidate的默认版本。你可以通过 jenv current candidate_name 来查看默认版本的信息。 如果你想卸载candidate的某一版本,通过 jenv uninstall canidate_name version即可完成。

下面是jenv的常见命令介绍:

  • ndidate的安装目录。 有的时候我们需要修改软件的相关配置,我们需要进入安装目录,使用 jenv cd candidate_name [version] 即可。 如果省略version则会进入默认版本的安装目录。
  • install: 安装某一版本的软件,如 jenv install maven 3.0.5
  • uninstall: 卸载某一版本的软件,如 jenv uninstall maven 3.0.4
  • reinstall: 重新安装某一版本的软件,主要用于内部的软件更新,如某一项目定制的Tomcat, 如 jenv reinstall tomcat 7.0-uic
  • use: 使用软件的某一版本,如 jenv use maven 3.0.4
  • which: 列出当前使用到的软件版本,如 jenv which maven
  • pause: 暂停某一软件的使用,主要用于软件版本的冲突
  • exe: 执行某一软件下的脚本,主要用于脚本名称冲突时。如TomEE和Tomcat都包含startup.sh,这个时候执行 "jenv execute tomcat startup.sh" or "jenv execute tomee startup.sh"
  • default: 设置某一软件的版本为缺省, 如 jenv default maven 3.0.5
  • cd: 更改当前目录进入到软件的安装目录,如 jenv cd groovy
  • show: 显示软件的详细信息
  • requirements: 显示jenv对环境的要求

jenv集成了哪些candidate

jenv主要集成了很多的开源软件,如Ant, Maven, Groovy等,关于集成的软件列表,可以通过 jenv all 或者访问 http://jenv.io/candidates 查看。

jenv和git的集成

有些时候我们的candidate是保存在git仓库中的,我们通过版本控制来控制candidate更新,这个时候我们可以通过install命令安装这些candidate。由于这些candidate还没有被中央仓库创建,所以我们需要在 ~/.jenv/db下创建一个candidates_local的文件,然后添加candidate名称。接下来我们就可以通过以下命令安装基于git的candidate:

$jenv install candidate_name version git@github.com:linux-china/groovy_scripts.git

以后更新也很简单,执行:

$jenv update candidate_name

###IntelliJ IDEA集成 jenv的命名和目录是标准的。应征者名称都是产品的名称,版本也是对应的。所有的candidate都安装在.jenv/candidates目录下,并且以candidate_name/version这个目录进行组织。有了标准后,就会被其他工具所识别。 jenv IntelliJ Plugin会自动扫描jenv安装目录,自动发现可用的Java版本、各种Web Server等,自动为Groovy Plugin,Scala Plugin等设置对应语言的安装目录,在IDEA中几乎不需要进行任何设置就会完成所有相关的依赖设置。 关于插件的详情请访问 http://plugins.jetbrains.com/plugin/7229?pr=idea

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.