IDEA设置项目的Java版本\mac的JDK版本\mvn编译选项\自定义包管理\编译时注解处理器
1、项目使用的Java版本如何切换
文件 -> 项目结构 -> 项目设置 -> SDK (可以选择本地的或者在线安装)
2、如何查看当前mac笔记本环境变量的Java版本
/usr/libexec/java_home -V
3、如何查看当前mac笔记本所有的Java版本
echo $JAVA_HOME
sudo vi ~/.bash_profile export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home" source .bash_profile
4、Java的SDK下载地址 - M1 选择哪个版本
ARM 的 DMG
https://www.oracle.com/java/technologies/downloads/#jdk18-mac
5、Java的tools.jar缺失
http://www.java2s.com/Code/Jar/t/Downloadtools180jar.htm
6、学习自定义注解实现 lombok
https://www.jianshu.com/p/faa24bedf524
最终 - 没能实现,总结一下遇到的问题:
a、IDEA设置当前项目使用的JDK版本如何设置
b、mac系统如何查看当前电脑所有的JDK目录(包括IDEA下载的JDK),如何查看当前计算机的环境变量的JDK版本
c、如何从官网下载JDK安装包
d、mac M1下载的对应的版本的JDK是选择ARM的
e、mac M1的 jdk-18.0.1.1.jdk 版本缺失tools.jar的下载
f、JDK 18使用的lombok的版本号要设置为1.18.20
g、自定义的jar包使用空的maven项目即可
h、maven-compiler-plugin的版本使用的jdk版本需要设置为与当前项目的JDK版本一致,该插件究竟干啥的
https://www.csdn.net/tags/OtDakg4sNDY1ODItYmxvZwO0O0OO0O0O.html
总结就是
maven-compiler-plugin 插件是一个 Maven 插件,用来编译项目代码,可以指定项目源码的 jdk 版本,编译后的 jdk 版本,以及编码
i、自定义的maven的jar包为啥需要
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>/Library/Java/JavaVirtualMachines/jdk-18.0.1.1.jdk/Contents/Home/lib/tools.jar</systemPath> </dependency>
这个依赖;
j、JDK中rt.jar、tools.jar和dt.jar作用
https://www.cnblogs.com/jtlgb/p/6039809.html
总结
tools.jar 编译的时候会用到(执行javac指令的时候)
dt.jar 是运行环境相关的包 ,主要给swing用的包,https://www.runoob.com/w3cnote/java-swing-demo-intro.html
而swing也就是给java设计的GUI工具包
7、Java自定义注解处理器
Java中常见的两种注解处理器
- 通过反射实现的运行时注解处理器
- 通过apt工具实现的编译时注解处理器
所谓apt就是 (Annotation Processing Tool)工具实现,APT可以用来在编译时扫描和处理注解。通过APT可以获取到注解和被注解对象的相关信息,在拿到这些信息后我们可以根据需求来自动的生成一些代码,省去了手动编写,APT的核心是AbstractProcessor类。在Java8中已经移除APT相关工具,而Java7中还保留着 http://openjdk.java.net/jeps/117
8、mvn dependency 的参数 systemPath 可以指定 jar 包的本地磁盘路径 - 也是引入自定义jar包的一个方式
所以当本地jdk的tools.jar缺失的时候可以下面这样引入
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>/Library/Java/JavaVirtualMachines/jdk-18.0.1.1.jdk/Contents/Home/lib/tools.jar</systemPath> </dependency>
9、那么自定义的 jar 包如何引用呢
a、指定本地jar包的路径,用参数dependency-systemPath指定;
b、将jar包安装到本地的mvn仓库之中(大部分人的仓库都是 D:/repository ),安装完成去仓库找找,安装指令
mvn install:install-file -Dfile=C:\Users\neo\Desktop\摄像头代码文档\lib库文件\jna.jar -DgroupId=com.mylib.jna -DartifactId=jna -Dversion=1.0 -Dpackaging=jar #file - 文件路径
c、发布到远程仓库
https://blog.csdn.net/anionic/article/details/120686335
相关文档:
https://zhuanlan.zhihu.com/p/408903764
10、springboot开发公用的模块
模块路径 a. common common-elastic common-mongo b. auth c. one # common模块 : 跟路径有一个poml文件 poml文件除当前模块 artifactId 还有 parents 和 modules parent 指向最顶层的 poml的标识 # common-mongo的poml文件的parent指向 common # 最顶层也有一个poml文件,其中有 modules 指向 common # parent节点 <parent> <artifactId>easyJava</artifactId> <groupId>com.example</groupId> <version>1.0.0</version> </parent> # modules节点 <modules> <module>common</module> <module>auth</module> </modules>
那么 parent 标签有什么用呢?
mvn 的modules标签又有什么用呢
主要还是为了更方便地管理模块
1、子模块不用引入父模块维护的依赖:多个子模块都用到了Elastic的Java client,那么如果最顶层的poml定义了该版本,那么各个子模块也不需要重新指定使用elastic的依赖
2、子模块可以不维护父模块dependencyManagemen定义的依赖的版本号
https://www.cnblogs.com/tiancai/p/14929949.html
https://blog.csdn.net/weixin_42114097/article/details/81391024
3、子模块之间可以互相引用,如果没有写parent节点,那么两个 example.com 下的包,在同一个路径下的,仍然无法找到对方的,自定义的jar包在mvn仓库找不到的话
11、mvn的 properties 可以定义变量,比如
<properties> <spring.version>18</spring.version> </properties> # 下面的dependency就可以写 <version>${spring.version}</version>