美文网首页
2019-03-17项目结构分析Java+IDEA+Maven+

2019-03-17项目结构分析Java+IDEA+Maven+

作者: 技术中的销售 | 来源:发表于2019-03-19 23:17 被阅读0次

    在Idea中,可以看到项目的目录如下


    image.png

    1、项目文件的目录

    xxx-service-parent-master

    2、External Libraries

    外部库

    引入jar包的方式

    1.通过 File -> Project Structure -> Modules -> Dependencies 直接将所需的jar包或者文件夹引入;
    2.先在 File -> Project Structure -> Libraries 中创建好Libraries,再通过 File -> Project Structure -> Modules -> Dependencies 引入事先定义好的Libraries;
    3.使用 Maven 工具。

    各方式的关系

    功能上,三种引入方式是没有区别的,都能实现所需jar包的引入;如果三种方式所引入的jar包不在工程目录下,引入的内容会显示在external library里面,应该是方便用户查看吧。
    通过方式2引入jar包会比方式1紧凑一些(可以把分散的jar包都整合成一个library)。
    使用 Maven 工具是最方便的,只要在 pom.xml 文件中配置所需的jar包即可自动引入,但是需要能够连接到 Maven 服务器。

    3、Scratches and Consoles

    概念

    Intellij IDEA 提供了两种临时的文件编辑环境,通过这两种临时的编辑环境,你可以写一些文本内容或者一些代码片段。两种 Scratches 分别是:Scratch files 和 Scratch buffers。

    作用

    我们有时候需要运行一小段代码来验证一下语句结果什么的,这个时候 Scratches 就非常有用了,不需要掺杂在项目主体代码中就可以完成。
    详细介绍参见https://segmentfault.com/a/1190000014202363 或官方文档https://www.jetbrains.com/help/idea/scratches.html

    项目属性

    File->Project Structure


    image.png

    project name

    项目名称、没啥好好说的。

    project SDK

    项目使用的Java环境,此处为1.8

    Project language level

    限定项目编译检查时最低要求的 JDK 特性。项目代码使用的 JDK 8 新特性:lambda 语法,但是如果 JDK 选择的却是 JDK 7,即使 language level 选择了 8 - Lambdas,type annotation etc.,也是没有多大意义的,一样会编译报错。

    对于大型项目,各个 Module 用到的 SDK 和 language level 很有可能是各不一样的,IntelliJ IDEA 对此也进行了支持。


    image.png

    Lambda

    什么是Lambda表达式?

    Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)

    使用Lambda有什么好处?

    可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。
    详见https://www.cnblogs.com/knowledgesea/p/3163725.html
    or https://www.cnblogs.com/franson-2016/p/5593080.html

    Project compiler output

    编译结果保存目录
    一、整个项目使用同样的目录
    二、不通模块使用不通的目录(单独设置)


    image.png

    Module

    在 IntelliJ IDEA 中Project是最顶级的结构单元,然后就是Module,一个Project可以有多个Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分的,比如:user-core-module、user-facade-module和user-hessian-module等等,模块之间彼此可以相互依赖。通过这些Module的命名可以看出,它们都是处于同一个项目中的模块,彼此之间是有着不可分割的业务关系的。

    因此,我们可以大致总结出:一个Project是由一个或多个Module组成,尽量让各模块处于同一项目之中,此时彼此之间具有互相依赖的关联关系。在这里,之所以说“尽量”,是因为 IntelliJ IDEA 的Project是一个没有具备任何编码设置、构建等开发功能的,主要起到一个项目定义、范围约束、规范类型的效果,或许,我们也可以简单地理解Project就是一个单纯的目录,只是这个目录在命名上必须有其代表性的意义。在一般情况下,IntelliJ IDEA 是默认单Project单Module的,这时Project和Module合二为一,在没有修改存储路径的时候,显然Project对Module具有强约束作用啦!不过说实话,这里就是将Module的内容放在了Project的目录下,实际上还是Module自己约束自己。

    Spring

    在module service 是spring类型,采用sprint boot进行配置
    详见 https://www.jianshu.com/p/182b5fe54e9f

    Facets

    Facets表述了在Module中使用的各种各样的框架、技术和语言。这些Facets让Intellij IDEA知道怎么对待module内容,并保证与相应的框架和语言保持一致。
    使用Facets能让我们下载并配置framework所必须的组件,会自动生成各种各样的描述符,并存储在适当的位置,等等。
    大多数Facets可以无冲突得添加到Module中。
    也有一些Facets是继承其他Facets的,这些Facets的添加就必须先添加他们的父Facets,这些Facets也要依赖Intellij IDEA的相关插件是否开启.

    Artifacts:

    artifact是一个项目资源的组合体。例如,一个已编译的java类的集合,一个已打包的java应用。
    其中war 是将项目编译并打包为war,而war exploded仅仅编译。
    Output directory是输出的目录。
    将项目发布到生产服务器时,建议将输出目录的war复制到tomcat的webapp目录下,tomcat会自动进行解压。
    保留之前版本的war包,方面进行版本回滚。

    Spring Boot

    Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。
    简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题---习惯大于约定。
    Spring Boot默认使用tomcat作为服务器,使用logback提供日志记录。

    相关文章

      网友评论

          本文标题:2019-03-17项目结构分析Java+IDEA+Maven+

          本文链接:https://www.haomeiwen.com/subject/ihuumqtx.html