2021/11/11 idea设置和快捷键、idea打jar包、nsis工具

这才是属于我的节日嘛,呜呜,┭┮﹏┭┮,节日快乐(快乐不起来啊)


idea目录文件

idea四层级结构

idea操作Java文件的基本单位:项目(Project)。对应四级结构
第1层级架构:项目(project)

在 IntelliJ IDEA 中Project是最顶级的结构单元,然后就是Module,一个Project可以有多个Module,模块之间彼此可以相互依赖

项目project包含:
    .idea文件夹(项目的配置文件)
     out文件夹(第2层级对应的所有字节码文件)
     模块文件夹(第2层级架构)

第2层级架构:模块(moudle)

在一个项目中,每个模块都可以使用特定的SDK或继承在项目级别定义的SDK。

模块moudle包含:
     src文件夹(存储第3层级架构内容)
     模块名.iml 文件(模块配置文件)
模块上右键-Open Module settiongs(可以新建模块,移除模块,导入模块)

第3层级架构:包(Package)
包的含义:多级文件夹
包的好处:1.对程序文件管理分类。2.有效避免重名的文件    

包中包含:
    java程序(第4层架构)

包的注意:如果程序在包中,必须在第4层架构进行包的声明
包的声明:
    1.包名就是公司域名倒序+功能 如:com.atguigu.idea
    2.格式:package 包名;
    3.命名规范:
         一个单词:单词全部小写(一般没有)
         多个单词:使用.进行间隔,一个单词就是一级文件夹

第4层级架构:.java文件(类文件)

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Helloworld"); 
   }
}

.iml文件

.iml:配置信息之意, infomation  of  module

iml文件是idea自己创建的模块文件,用于java应用开发,存储一些模块相关的信息。每个模块都有一个iml文件。 


.idea目录

.idea目录:存放项目的配置信息。包括数据源,类库,项目字符编码,历史记录,版本控制信息等


working dir目录

编辑配置


导入lib目录jar

lib目录,很久很久以前。那时候还没有maven。。。那么就没有本地仓库,pom文件,gav这一说。此时是把jar包放在lib目录下。jar文件我们并不能进行查看,也不能使用。

idea怎么把lib下的jar引入呢?将jar正式添加到java的工具库中


方式一

选中lib文件夹,右键-Add as Library 就会出现下面的弹框了

点击ok,直观上来jar前面多了“>”  是可以打开的了 

点击左上角的File选项选择Project Structure,打开Project Structure可以看到如下现象


方式二

选择需要使用到jar库的src文件夹并点击ok

 

会弹出如下提示框,点击ok

导入jar文件,完成后点击右下角apply进行应用

 效果与刚刚一样


方式三

lib已存在,即导入过jar文件

进入File选项选择中Project Structure选项下的Libraries中,点击 + 直接添加jar文件,点 Apply jar包即可使用。 

添加后效果如下:

 


idea中打jar包

创建Artifact

jar (Java Archive File),翻译过来就是java的档案文件。在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的,包含了JAR包的描述信息、主类的全类名等信息。

File -->Project Structure -->Artifacts --> Jar --> From module with dependencies.如下图

打开后,填写完成 点击ok

Module下拉框中选中需要打包的Module,

Main Class 框中选择主类。

Directory for META-INF/MENIFECT.MF   这里是输入一个路径,用于保存MENIFECT.MF文件,使用默认的路径即可

Include tests 如果选中,打包时将会把测试用例(Tests)类也打包进去。通常不用选中。

JAR files from libraries有两个选项:

第一个是打完包就是一个 jar 包;第二个打完包,是一个 jar 包+外带你项目所用的 jar 包

extract to the target JAR

表示将第三方JAR包内容都解压并统一打包到最后生成的JAR包。如下图

copy to the output directory and link via menifest   

表示将第三方JAR包内容拷贝到输出目录。如下图

如果你只是希望打包Module本身,可以选择“extract to the target JAR”;

如果希望打包Module的同时,也将第三方的JAR一起打包,可以选择“copy to the output directory and link via menifest”。

--------------------


配置Artifact

Name 和 Output directtory

Name 输入框中可以修改Artifact的名称(不是生成的jar文件的名称)。

Artifacts “tab页”就会显示如下:jar包的输出目录idea会有默认,可自己去改

Output Layout

Output Layout 中,你可以添加或删除需要打包的内容。

只希望打包Module本身,我们并不需要那么多的jar,在Output Layout中把多余的“减掉”

再重新build,打包后就只包含这个Module的class,不会包含第三方JAR

修改生成的jar文件的名称

如果希望修改生成的jar文件的名称,需要右键点击Output Layout框中的根节点,选择rename,如下图:

打包后结果


Build Artifacts

配置工作完成后,就可以正式构建jar包了

Build --> Build Artifacts,选择下面的Build,就完成jar包构建输出了。


打包后运行

java -jar xxx.jar

这种模式比较简单,适用于所有的class/资源都打包到一个jar文件中的情况,

一个项目中可能包含大量的第三方库,这时,如果将所有的库都打包到同一个jar文件中,显然是不合适的,所以通常我们会使用下面的方式。

java -cp xxx xxx.xxx


jar包冲突

有时候引入的jar包中的包名类名与其他jar包中的包名类名相同,导致程序在编译或运行的时候无法正确引用想要的类

Intellij IDEA里怎样配置maven在编译时加入lib目录下的jar包

<build>

        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <extdirs>project-demo\lib</extdirs>
                    </compilerArguments>
                </configuration>
            </plugin>
         </plugins>       

</build>

idea设置

快捷键打开设置面板:ctrl+alt+s

1.提示忽略大小写设置


 2.开启自动导包功能 


3.系统主题设置


4.设置显示行号和方法间的分隔符


 5.类注释模板设置

所有的类都必须添加创建者和创建日期

/**
 * @Description: 
 * @Author: 小羽毛
 * @Date: ${DATE} ${TIME}
 */

设置好后,在新建一个类的时候就可以自动生成了。效果如下:


6.jdk版本设置


7.字符编码设置

点击Editor中的File Encodings,把三处的编码都改为 utf-8 即可,点击apply即可

Global Encoding: UTF-8         设置全局编码为UTF-8

Project Encoding: UTF-8        设置项目编码为UTF-8,在下面把要项目添加进来.

Default encoding for properties files: UTF-8        设置属性文件的默认编码为UTF-8

更改默认的编码设置


8.隐藏开发工具的配置目录

隐藏开发工具的配置目录,例如.idea .iml

在file ->setting->Editor->File Type -> ignore file and folders 结尾添加


idea积攒的快捷键

ctrl+p 查看方法的参数


ctrl+r 替换

Ctrl + F    在当前文件进行文本查找 (必备)


alt+7 查看当前类结构


ctrl+h 查看当前类的继承关系


ctrl+f12 显示当前文件结构


ctrl+alt+L 格式化代码


Ctrl+B 快速打开光标处的类或方法 

光标放在某个对象上光标放在类上或方法上 


Ctrl + D   复制光标所在行

Ctrl + D 复制选择内容,并把复制内容插入光标位置下面 (必备)

Ctrl + Y 删除光标所在行 或 删除选中的行 (必备)


Ctrl + O    选择可重写的方法

Ctrl + O 重写方法

Ctrl + I  实现方法


ctrl+alt+t 进行异常的处理


ctrl+alt+m 抽取方法

抽取选中代码为一个方法

ctrl + e 打开最近的文件

ctrl + Alt + 左右方向键 : 跳转到历史光标所在处


idea插件

Jump To Line

这个插件可以帮助我们在调试的时候,向前或向后跳到想要执行的语句处。这里就包括了Reset Frame无法回退的位置,

你可以通过拖动这个黄色小尖头,直接将程序执行到某一行代码的位置,实现拖到哪儿执行到哪儿的效果,具体效果如下


Sequence Diagram

把接口的调用关系,整个时序图展示出来,对深入了解项目帮助很大。刚好有这么一款插件SequenceDiagram能够根据方法的调用关系,自动生成执行时序图。

下载个IDEA 插件 Sequence Diagram 通过任意个类和方法查看代码的流程。

插件使用

选中一个方法,右键以后会出现SequenceDiagram,选中即会出现。

点击左边,可设置调用深度。勾选下面的Skip可以忽略一些方法,避免时序图显示过多。选中Display only project classes 将显示非本工程的调用,比如jar包中的类。

-------------------------

选择Go to Source则跳转到对应的类。Remove Class XXX则会把对应类文件从时序图中删除(并不会删除实际代码),去除一些非必要的时序调用的显示,能够让复杂的时序图更加简洁。


maven Helper

一款
快速解决依赖冲突的IDEA插件

   其中三个选项分别表示如下:

  1. Conflicts(查看冲突)
  2. All Dependencies as List(列表形式查看所有依赖)
  3. All Dependencies as Tree(树形式查看所有依赖)

IDEA Maven Helper插件(详细使用教程)_maven helper插件怎么使用-CSDN博客


NSIS工具

安装NSIS

NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序,提供了安装、卸载、系统设置、文件解压缩等功能。

官网下载NSIS安装包。

https://nsis.sourceforge.io/Download

1


制作必看

NSIS脚本文件的拓展名是.nsi,我们创建一个 installer.nsi,文件名可以随意取。

;#一起在NSIS的脚本中作为注释符,后跟注释

添加安装区段

Section "Section1" SEC01 
SectionEnd

区段由Section和SectionEnd组成,Section行中参数依次为:区段名、区段的唯一标识码。代码中Section1为区段名,SEC01为区段的唯一标识码,用于其他地方操作区段的标识使用

指定安装包的输出位置

OutFile "MyApp_Setup.exe"
//OutFile "D:\installer\MyApp.exe" ;指导路径的情况下,输出到指定路径下

Section "Section1" SEC01
SectionEnd

属性命令OutFile,它是必须有的命令。指定生成的安装包的路径和名称,可以设置相对路径与绝对路径。当只有名称时,生成文件与.nsi文件同目录。


安装程序属性

安装程序属性主要控制安装程序的:程序信息、图标、默认安装目录、外观、安装界面文本、页面、包含的文件。

!define PRODUCT_NAME "My app"
!define PRODUCT_VERSION "1.0"

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" ;

!define是定义常量值的命令,它是一个编译时命令。常量定义好后不能改变值,定义后的常量使用 ${常量名}进行使用。

Name 设置安装程序的名称。

NSIS定义好的常量

https://www.nsisfans.com/help/Section4.2.html#4.2.3

现代UI界面(MUI)

现代UI简称为MUI,是NSIS安装包最流行的UI库

NSIS自带MUI,所以直接引用进来:

!include "MUI.nsh"

再设置MUI的界面,使用 insertmacro关键字导入不同界面的宏定义。

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

卸载程序属性

有安装程序,那么与之对应的就是卸载程序。卸载程序对应着我们的程序的卸载过程,对于常规软件来说,必提供卸载程序给用户方便卸载。

至少编写一个卸载区段,作为卸载程序的执行内容。这里使用唯一特殊的卸载区段Uninstall

Section -Uninstall
SectionEnd

注册安装程序

Section -myapp
	// ...

  ; Register the installed software
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "InstallDir" "$INSTDIR"
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString" "$INSTDIR\uninstall.exe"
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayIcon" "$INSTDIR\resources\uninstallerIcon.ico"
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd

这里使用指令WriteRegStr添加注册表字符串值,它是一个注册表指令。基础语法如下:

WriteRegStr rootkey subkey key_name value
  • HKCRHKEY_CLASSES_ROOT,前者为缩写,下同。
  • HKLMHKEY_LOCAL_MACHINE
  • HKCUHKEY_CURRENT_USER
  • HKUHKEY_USERS
  • HKCCHKEY_CURRENT_CONFIG
  • HKDDHKEY_DYN_DATA
  • HKPDHKEY_PERFORMANCE_DATA
  • SHCTXSHELL_CONTEXT

subkey为具体注册表项相对于rootkey的全路径,下图中的路径框中的 SOFTWARE\BiliBili 就是subkey。

注册表项下创建指定的 DisplayNameInstallDirUninstallStringDisplayIconDisplayVersionURLInfoAboutPublisher这些值告诉Windows我们安装的程序信息。然后,我们就可以在安装的程序列表内看到已安装的程序信息。

更多注册表操作可以参考:

https://www.nsisfans.com/help/Section4.9.html#4.9.2

与其他安装过程同理,安装写入了注册表,那么就需要在卸载的时候清理干净。

 DeleteRegKey HKLM "${PRODUCT_UNINSTALL_KEY}"

安装HW VNIS Edit

HW VNISEDIT是他的这门语言的一个开发工具,能通过向导自动生成一些代码,下面我们做一个简单的应用程序打包步骤


常见问题

一、maven模块忽略问题

解决方式1:

ctrl+alt+s 打开settings设置模板,如下图取消勾选即可

 解决方式2:


二、idea中彻底删除一个工程

编辑在项目目录下的.idea文件夹中的compiler.xml  

打开后内容如下:

idea控制台中文乱码

首先是编译器语言 file -> settings ->Appearance(外观) -> theme(主题设置) -> use custom font
(最好不设置采用默认语言,或选择如下图能支持中文的语言,避免出现中文乱码)


三、idea 导入esclipse项目

选择 Import project from external model,下面点击 Eclipse,然后点击 Next

上面的路径选择的需要导入项目的地址,下面选择 Keep project and module files in,其路径选择的是项目的地址。这里可以选择重新创建一个模块创建,即选择 Create module files near .classpath files(本人选择保持原有模块)。接着点击 Next 下一步。

选择 Use default project code style,然后点击 Next。