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>

 

 

posted @ 2022-05-15 01:12  许伟强  阅读(1285)  评论(0编辑  收藏  举报