IDEA(IntelliJ IDEA)是众多 Java 开发者的首选。
商业版的昂贵
IDEA 商业版(IntelliJ IDEA Ultimate)功能非常强大,能够满足 Java 开发的所有需求,但其高昂的价格……

此时只能感叹,不是不想用正版,而是正版用不起!
破解版的弊端
除了购买正版,只能选择破解版了。
网上有非常多的破解教程,每个版本都会跟进,只要勤加动手,总是能破解的。
相信这是大多数开发者的选择,本人很长一段时间也是这样做的,但它有以下几个缺点:
- BUG 频发。 由于是破解版,总会有一些莫名其妙的 BUG。
- 不能升级版本。 如果升级版本需要重新破解,比较麻烦,且成功的可能性未知。
- 不能稳定使用。 由于是破解版,随时可能遭遇官方的封杀,这样就不能用了,只能寻求其他破解之法。
所以,破解版虽然能够白嫖,但白嫖的代价可不低,特别是在工作场景中,工具的不稳定是会影响工作效率的,甚至是工作的心情。
社区版的真香
在经历了破解版的种种弊端后,我决定尝试下社区版。
之前白嫖商业版习惯了,从来没有关注过社区版,这次尝试之后,只能感叹,真香!
优点
社区版有两大显而易见的优点:
- 免费。 相较于商业版高昂的价格,社区版的免费无疑是最大的优点。
- 正版。 社区版由于是免费的,可以直接使用正版,省去了破解的麻烦,也规避了破解的所有缺点。
缺点
当然了,社区版的缺点也是有的:
- 功能较少。 社区版只提供了最基本的 Java 开发相关功能,商业版中的 Web 开发、数据库管理、特色功能都是没有的。
个人觉得这不是问题,因为 Web 开发、数据库管理都是有专业免费的工具可以实现的,那些特色功能在 Java 开发中也不是必需的。
- 性能较弱。 社区版的维护是没有商业版频繁的,所以性能和响应速度这些肯定无法与商业版相比。
在一段时间的使用下来,这点性能和响应速度的减弱是完全可以接受的,而且性能较弱也意味着占用的内存较少,对于 IDEA 这个”内存大户”甚至可以归为优点。
使用
在了解了社区版的优缺点后,就该介绍社区版的使用了。
首先声明,社区版的使用逻辑与商业版没有任何区别。
所以,对于熟悉商业版的开发者来说,社区版是没有学习成本的。
功能
这里只介绍社区版相较于商业版不能直接使用的功能。
社区版自带的功能与商业版一致,就不赘述了。
Lombok
与商业版不同,社区版是没有默认安装 Lombok 插件的,所以不能直接使用 Lombok 的功能,需要先安装插件:
安装插件后,Lombok 的功能与商业版一致,这里就不详细介绍了。
Docker
与商业版不同,社区版是没有默认安装 Docker 插件的,所以不能直接使用 Docker 的功能,需要先安装插件:
如果项目中需要使用 Dockerfile 等 Docker 的功能,可以安装此插件实现。
Tomcat
对于非 Spring Boot 项目,项目的运行需要依赖服务器,常用的服务器 Tomcat 社区版是没有自带功能的,需要先安装插件:
然后进行如下步骤配置 Tomcat:
-
配置服务。
-

-
添加 Tomcat。
-

-
配置 Tomcat。
-
VM options:
1-Dfile.encoding=GBK
这样,就可以使用 Tomcat 启动服务了。
打war包
IDEA 社区版不能像商业版那样可以通过工件打 war 包。 如果需要打 war 包,可以使用 Ant 进行打包,具体步骤如下:
- 创建
build.xml。
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 2<!-- WARNING: Eclipse auto-generated file. 3 Any modifications will be overwritten. 4 To include a user specific buildfile here, simply create one in the same 5 directory with the processing instruction <?eclipse.ant.import?> 6 as the first entry and export the buildfile again. --> 7<project basedir="." default="packWar" name="TARGET"> 8 <property environment="env"/> 9 <property name="debuglevel" value="source,lines,vars"/> 10 <property name="target" value="1.8"/> 11 <property name="source" value="1.8"/> 12 13 <!--自定义部分--> 14 15 <property name="build" value="${basedir}/build"/> 16 <property name="build.class" value="${basedir}/build/classes"/> 17 <property name="src" value="${basedir}/src"/> 18 <property name="web" value="${basedir}/WebContent"/> 19 <property name="project_jar_path" value="${web}/WEB-INF/lib"/> 20 <property name="jre_jar_path" value="D:\Environment\jdk\jdk1.8.0_202\jre\lib"/> 21 <property name="jre_jar_ext_path" value="D:\Environment\jdk\jdk1.8.0_202\jre\lib\ext"/> 22 <property name="tomcat_jar_path" value="D:\Environment\apache-tomcat-8.5.79\lib"/> 23 <path id="project_jar"> 24 <fileset dir="${project_jar_path}"> 25 <include name="*.jar"/> 26 </fileset> 27 28 </path> 29 30 <path id="jre_jar"> 31 <fileset dir="${jre_jar_path}"> 32 <include name="*.jar"/> 33 </fileset> 34 35 </path> 36 37 <path id="jre_ext_jar"> 38 <fileset dir="${jre_jar_ext_path}"> 39 <include name="*.jar"/> 40 </fileset> 41 42 </path> 43 44 <path id="tomcat_jar"> 45 <fileset dir="${tomcat_jar_path}"> 46 <include name="*.jar"/> 47 </fileset> 48 49 </path> 50 51 <path id="TARGET.classpath"> 52 <pathelement location="build/classes"/> 53 <path refid="project_jar"/> 54 <path refid="jre_jar"/> 55 <path refid="jre_ext_jar"/> 56 <path refid="tomcat_jar"/> 57 </path> 58 59 <target name="clean"> 60 <echo message="--------------------开始清理旧的编译文件---------------------------"/> 61 <delete dir="build/classes"/> 62 <delete file="${basedir}/build/${ant.project.name}.war"/> 63 </target> 64 65 <target name="init"> 66 <echo message="---------------------开始拷贝资源文件-----------------------------"/> 67 <mkdir dir="build/classes"/> 68 <copy includeemptydirs="false" todir="build/classes"> 69 <fileset dir="src"> 70 <exclude name="**/*.java"/> 71 </fileset> 72 73 </copy> 74 75 <copy includeemptydirs="false" todir="build/classes"> 76 <fileset dir="resources"> 77 <exclude name="**/*.java"/> 78 </fileset> 79 80 </copy> 81 82 <copy includeemptydirs="false" todir="${project_jar_path}"> 83 <fileset dir="${tomcat_jar_path}"> 84 <include name="*.jar"/> 85 </fileset> 86 87 </copy> 88 89 </target> 90 91 <target name="build"> 92 <echo message="-----------------------开始编译JAVA文件-----------------------------"/> 93 <echo message="${ant.project.name}: ${ant.file}"/> 94 <javac debug="true" debuglevel="${debuglevel}" destdir="build/classes" includeantruntime="false" source="${source}" target="${target}"> 95 <src path="src"/> 96 <src path="resources"/> 97 <classpath refid="TARGET.classpath"/> 98 </javac> 99 100 </target> 101 102 <target name="packWar"> 103 <echo message="-----------------------开始构建war包-----------------------------"/> 104 <war destfile="${basedir}/build/${ant.project.name}.war" webxml="${web}/WEB-INF/web.xml"> 105 <fileset dir="${web}"/> 106 <classes dir="${build.class}"/> 107 </war> 108 109 </target> 110 111</project> 112 113
- 创建
build.xml后会出现 Ant 的控制窗口。

-
选择
packWar,点击鼠标右键选择属性。 -

-
选择执行,在
Ant 命令行中输入如果命令:
1clean init build packWar
点击确定保存配置。
- 需要打 war 包时,双击
packWar即可进行打包。 按照build.xml的配置:- 打的 war 包会放在
build目录下。 - 编译后的文件会放在
build/classess目录下。 如果需要调整,可以修改build.xml中的配置。
- 打的 war 包会放在
如此,IDEA 社区版已经能满足日常的 Java 开发工作了,免费使用正版的 IDEA,只能说一句,真香!
- 环境
- IntelliJ IDEA Community Edition 2023.2.3
- JDK 1.8.0_202
- JDK 17.0.5
- Maven 3.6.3
- Tomcat 8.5.79
