idea配置优化、Maven配置镜像、并行构建加速打包、解决maven打包时偶尔几个文件没权限的问题
idea配置优化、Maven配置镜像、并行构建加速打包、解决maven打包时偶尔几个文件没权限的问题
关闭自动更新
取消启动idea时直接打开上次的项目(可选)
创建文件设置多行注释头
Tomcat JVM参数调优
-Dfile.encoding=UTF-8
-Xms512m
-Xmx1536m
-XX:ReservedCodeCacheSize=512m
-XX:+UseG1GC
idea JVM参数调优
-Dfile.encoding=UTF-8设置默认编码为UTF-8
Xms:JVM初始内存大小
Xmx:JVM最大内存大小
XX:ReservedCodeCacheSize:保留的代码缓存大小
-XX:+UseG1GC:使用G1垃圾回收机制
一般情况下:生产环境Xms和Xmx建议设置成一样的这样就不会有内存波动导致java程序性能下降。开发环境建议配置成不同的,因为我们的程序波动不频繁。ReservedCodeCacheSize指的就是代码编译时所使用的缓存,如果缓存满了,编译代码的速度会大大降低。
电脑8G内存推荐配置:
-Dfile.encoding=UTF-8
-Xms512m
-Xmx1024m
-XX:ReservedCodeCacheSize=256m
电脑16/32G内存内存以上推荐配置:
32G如果Xmx也可以设置成2048m,但是经过测试1536m足够了,不够的话再加,因为有些老项目又占内存又臃肿!
-Dfile.encoding=UTF-8
-Xms512m
-Xmx1536m
-XX:ReservedCodeCacheSize=512m
Java编译增加命令行参数
如:jdk8+增加了命令行参数-parameters,这个参数可以保证编译前后的方法的参数名是一致的。防止使用反射获取方法参数名错误。
如果编译的时候报错,可以去掉其中一个idea/maven/gradle设置的参数
maven >= 3.6.2 pom.xml使用命令行参数-parameters
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>8</source>
<target>8</target>
<encoding>UTF-8</encoding>
<parameters>true</parameters>
</configuration>
</plugin>
maven < 3.6.2 pom.xml使用命令行参数-parameters
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
Gradle build.gradle 使用命令行参数-parameters
tasks.withType(JavaCompile).configureEach {
options.encoding = "UTF-8"
options.compilerArgs.add("--enable-preview")//启用 jdk21 预览功能
options.compilerArgs.add("-parameters")//编译后变量名称和源代码名称一致,IDEA "Java Compile" "Additional command line parameters"添加"-parameters"
}
tasks.withType(GroovyCompile).configureEach {
groovyOptions.parameters = true
}
修改全局编码、项目编码、属性文件默认编码为UTF-8(非常重要)
分行显示文件
settings.xml配置
随便找个maven项目的pom.xml右键
有打开就打开,没有打开就创建
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:/Users/X/.m2/repository</localRepository>
<servers>
<!-- 对应repository id为公司私有发布仓库的id -->
<server>
<id>nexus</id>
<username>公司私有发布仓库用户名</username>
<password>公司私有发布仓库密码</password>
</server>
<!-- 对应repository id为公司私有快照仓库的id -->
<server>
<id>nexus-snapshots</id>
<username>公司私有快照仓库用户名</username>
<password>公司私有快照仓库密码</password>
</server>
</servers>
<mirrors>
<!--
下面这2个仓库等效于
mirrorOf = *
url = https://maven.aliyun.com/repository/public
但是不推荐用 mirrorOf = * 某些情况下可能会有问题,推荐单独配置!
-->
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<name>aliyunCentral</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>
<id>aliyun</id>
<mirrorOf>jcenter</mirrorOf>
<name>aliyunJcentral</name>
<url>https://maven.aliyun.com/repository/jcenter</url>
</mirror>
</mirrors>
<profiles>
<!-- nexus对应activeProfile的id -->
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<url>公司私有发布仓库地址</url>
<!-- 可以理解为生产环境稳定的发布版本 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 可以理解为开发环境不稳定的快照版本 -->
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>nexus-snapshots</id>
<url>公司私有快照仓库地址</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<url>公司私有发布仓库地址</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>nexus-snapshots</id>
<url>公司私有快照仓库地址</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- 优先从配置文件配置的仓库下载依赖,找不到再从阿里云镜像库下载依赖 -->
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
ctrl+s保存
默认配置文件地址
C:\Users\电脑的用户名.m2
repository是下载的依赖,把这里面的依赖全部删除,然后idea重新下载maven依赖,发现会比不配置镜像快很多
优化import导包
调整编辑器字体大小
关闭不需要的代码检查
去除英语单词拼写检查(可选,强迫症必选)
搜索:Typo,找到Proofreading下面的Typo去掉勾选
去除重复代码检查(可选,强迫症必选)
搜索:Duplicated code fragment,找到General下面的Duplicated code fragment去掉勾选
去除方法提取警告
搜索:Method can be extracted,去掉Java下面 Code maturity下面的Method can be extracted勾选
去除未使用的变量警告
搜索:Unused declaration
插件
配置不高的电脑,尽量少安装和使用插件,因为会占用更多的内存
- Chinese汉化语言包(选装)
- EasyCode(强烈推荐,自定义代码模板根据表结构一键生成CRUD模板代码)
- GenerateAllSetter一键生成Entity所有的set方法和get方法(推荐,方便设置实体类的值,不用一个一个手敲)
- GsonFormatPlus快捷键 Alt + S 格式化JSON、JSON转POJO(强烈推荐)
- JPA Buddy降低使用JPA开发障碍、提高开发人员的生产力、确保代码遵循最佳实践(ORM框架是JPA,强烈推荐)
- JRebel and XRebel热加载插件,修改绝大部分代码都不用重启SpringBoot或者Tomcat直接可以进行代码调试(强烈推荐)
- JRebel mybatisPlus extension 热重载插件(ORM框架是MyBatis-Plus,强烈推荐)
- JSON Parser格式化JSON(强烈推荐)
- MapStruct support支持MapStruct快速查找变量名(使用了MapStruct jar包的,强烈推荐)
- Maven Helper分析和排除冲突Maven依赖关系(使用Maven作为构建工具的,强烈推荐)
- MyBatisX快速定位xml和mapper位置生成模板代码等(ORM框架是MyBatis,强烈推荐)
- MyBatis Log Free把MyBatis占位符【?】替换成具体的值(ORM框架是MyBatis,强烈推荐)
- POJO to JSON把POJO转为JSON(强烈推荐)
- Statistic统计代码(选装)
- String Manipulation字符串切换,如:字符串变量名由下划线切换为驼峰等(强烈推荐)
- Translation翻译插件(选装)
GenerateAllSetter插件生成无默认值的set方法
GsonOrXmlFormatPlus用JSON生成POJO
模块 | 设置 | 是否默认 | 说明 |
---|---|---|---|
Convert Method | object/arrayFromData | 否 | Gson自定义生成对象 |
Generate | virgo mode | 是 | virgo模式,生成代码之前可自定义调整字段 |
Generate | generate comments | 否 | 是否生成注释 |
Generate | split generate | 否 | 是否单独生成子类 |
Bean | reuse bean | 否 | TODO |
Field | name suffix | 是 | 生成类名后缀 |
Field | field(private/public) | 是 | 字段私有/公开 |
Field | name prefix | 是 | 生成字段名前缀 |
Field | use serialized name | 是 | 使用序列化名,类字段为驼峰与添加json注解声明 |
Field | use wrapper class | 是 | 使用包装类,int 转 Integer |
Field | use lombok | 是 | 使用Lombok替代Getter和Setter |
Field | use number key as map | 是 | 使用数字类型key替换为Map结构,待完善 |
Convert library | jackson/fastjson | 是 | jackson/fastjson等转换注解 |
生成内容如下
DetailsDTO.java
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* DetailsDTO
*/
@NoArgsConstructor
@Data
public class DetailsDTO {
/**
* address
*/
private String address;
}
IOTests.java
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
public class IOTests {
/**
* name
*/
private String name;
/**
* age
*/
private Integer age;
/**
* details
*/
private DetailsDTO details;
}
JSON Parser插件把它放到底部左下角
个人认为底部左下角更方便操作
Maven Helper插件检查是否有依赖冲突
去除鼠标右键功能
String Manipulation插件把下划线转驼峰
设置自定义指令和快捷键
设置Alt + M + Number 快捷键
调整自定义指令快捷键位置
git使用非模式提交界面
加快编译源代码速度
设置线程计数,使用多线程构建
始终更新快照(Always update snapshots)建议勾选,防止开发过程当中包不一致导致的报错,误以为是bug;
use settings from .mvn建议去掉勾选
要配置了下面这个-Dmaven.compile.fork=true参数,上面的线程计数配置才会生效。
Maven VM选项参数
Xms2048m(初始堆大小,Xms 和 Xmx 通常设置为可用内存的 50% - 75%。)
Xmx2048m(最大堆大小,Xms 和 Xmx 通常设置为可用内存的 50% - 75%。)
XX:ReservedCodeCacheSize=512m(调整编译内存大小提升编译速度)
Dmaven.test.skip=true(完全跳过测试阶段【如果你只想跳过执行单元测试,但仍希望编译测试代码,可以使用 -DskipTests】)
Dmaven.site.skip=true(跳过生成 site 文档)
Dmaven.javadoc.skip=true(跳过生成 javadoc 文档)
Dmaven.compile.fork=true(多线程编译【配合-T1C参数使用,即:上面配置Thread count的值】)
-Xms2048m
-Xmx2048m
-XX:ReservedCodeCacheSize=512m
-Dmaven.test.skip=true
-Dmaven.site.skip=true
-Dmaven.javadoc.skip=true
-Dmaven.compile.fork=true
maven控制台只输出error级别的日志加快打包速度(适合强迫症患者)
如果不是旧项目不建议这么设置,因为旧项目才会有这种使用过期依赖或者写了未校验的代码
加上-q参数,这样控制台就只会输出error级别的日志,并且打包速度大大加快!
package -q -f pom.xml
自动接受证书(如:配置了GitHub代理,每次启动idea都会要求你接受代理的证书,配置了这个以后就不会弹出来了。)
解决idea maven 打包时无权限问题或偶尔几个文件打包失败的问题
问题原因:没有配置maven环境变量或者使用了自动构建
配置maven环境变量
环境变量注意大小写!!!建议为大写下划线命名分格
MAVEN_HOME
配置Path
Path追加内容
%MAVEN_HOME%\bin
取消自动构建
自动构建这玩意开发的时候很爽, 但是打包的时候容易出现问题。比如:先执行maven clean,然后执行maven package,这时候偶尔会出现打包丢失文件的情况。为什么会出现这种情况?就是因为你clean掉了编译的文件,这时候你没有运行项目,idea就会自动执行构建,而这时候你又执行package打包,就会导致构建和打包冲突!
设置JDK源码而不是使用IDEA反编译获取代码。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)