现代Java服务端开发核心技术之Java基础项目搭建
Posted ittimeline
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了现代Java服务端开发核心技术之Java基础项目搭建相关的知识,希望对你有一定的参考价值。
现代Java服务端开发核心技术之Java基础项目搭建
3.1 使用IntelliJ IDEA创建多模块Maven项目
3.1.1 使用IntelliJ IDEA创建Maven父模块javacore
- 从Jetbrains Toolbox中启动IntelliJ IDEA
启动界面如下所示
- 选择Create New Project
- 创建Maven项目
选择基于Maven的项目模板
项目的JDK选择之前安装的JDK11
如果想要选择其他JDK版本,只需要点击右上角的New菜单,选择其他版本JDK的安装路径即可
-
设置maven项目的GroupId和ArtifactId
GroupId是定义当前Maven项目隶属的实际项目
-
设置项目名称和项目路径
-
设置自动导入
该设置会自动导入maven依赖
-
项目总览
为了方便后期更好的使用IntelliJ IDEA开发项目,将Toolbar,Tool Buttions,Status Bar,Navigation Bar 都显示出来
8.删除src目录
由于javacore作为项目的父级目录存在,只是用来定义子模块的通用属性,因此还需要手动删除src目录,后期的java代码都会存放在各个子模块中,最终的项目结构会是如下图所示的结构
3.1.2 处理不必上传的文件
在创建项目时,IntelliJ IDEA自动添加了它需要的.idea目录和javacore.iml文件,在项目开发中,这些文件都不应该被提交。
这里我们利用之前安装的.gitignore插件实现管理不需要提交到版本控制系统的文件。
首先添加.gitignore模板文件
选择Java的.gitignore文件
文件内容如下
# Created by .ignore support plugin (hsz.mobi)
### Java template
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
#在IntelliJ IDEA 自动生成的.gitignore文件基础之上添加过滤指定的内容
*.idea/
*.iml
*/target/
*.DS_Store
这时就可以使用IntelliJ IDEA的Hide ignore Files隐藏不需要提交的文件
隐藏后的项目结构的目录如下所示
3.1.3 创建README.md文件
该文件是基于markdown语法的文件,后期主要是用于项目说明。
如果想要编写markdown文件,macOS平台上的mweb是个不错的选择,使用它打开位于项目路径的README.md文件便可以轻松编辑markdown文件,即使你不了解markdown语法。
3.1.4 创建javacore-object子模块
- 创建基于maven的子模块
- 设置maven模块的坐标信息
- 设maven模块的名称以及路径
- 包含javacore-object模块的javacore项目概览
模块目录结构说明
目录 | 说明 |
---|---|
src/main/java | 源码 |
src/main/resources | 资源,例如配置文件 |
src/main/test | 测试代码 |
3.1.4 配置父模块
在父模块javacore同级别的pom.xml文件中定义项目依赖和构建配置
首先定义引用第三方类库的版本信息,后期如果想要升级版本,只需要修改<properties><?/properties>
中指定的类库版本配置即可。
<properties>
<log4j.version>2.11.1</log4j.version>
<commons-lang3.version>3.8.1</commons-lang3.version>
<commons-collection4.version>4.2</commons-collection4.version>
<guava.version>26.0-jre</guava.version>
<testng.version>6.14.3</testng.version>
</properties>
然后定义引用第三方组件的依赖,如果不知道某个第三方组件(例如commons-collection4)的Maven坐标信息,可以访问https://mvnrepository.com/ ,然后搜索想要的组件,
选择对应的版本,如下图所示
然后查看对应的依赖,将<dependency></dependency>
节点的配置信息复制到pom.xml文件的<dependencies></dependencies>
节点中即可。
<dependencies>
<!--基于lo4j2的日志-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<!--apache commons组件-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>${commons-collection4.version}</version>
</dependency>
<!--google guava api-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<!--单元测试框架 testng-->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>${testng.version}</scope>
</dependency>
</dependencies>
通过右边的Maven菜单就可以查看到当前项目依赖了哪些组件,如下图所示
3.2 Java版HelloWorld实现
3.2.1 设置文件模板
在编写代码之前,首先创建一个文件模板,使用快捷键command+,进入Preferences界面,然后搜索File and Code Templates,如下图所示
修改Class,Annotaiton,Enum默认的模板文件,添加如下内容
/**
* ${DESCRIPTION}
* @author liuguanglei [email protected]
* @create ${DATE}${TIME}
* @since JDK11
* @website www.ittimeline.net
*
*/
它就是使用了Java文档注释,后期创建的每个Java类、接口和枚举都会使用该模板。
如下图所示
3.2.2 创建包(package)
Java的源文件(以.java结尾)通常都是存放在某个包类,包名通常都是域名倒置,例如com.alibaba
,而包实际上就是文件夹。
IntelliJ IDEA创建包,如下图所示
设置包名
在Finder中查看包
3.2.3 创建源文件HelloWorld.java
首先我们使用IntelliJ IDEA在net.ittimline.javacore.object包下面创建一个类
类名为HelloWorld
设置该类的描述信息
HelloWorld.java预览
3.2.4 HelloWorld实现及其详解
HelloWorld通常是用来形容学习一门编程语言的入门程序,如果你能够把HelloWorld独立编写、编译、和运行出来,那么就算是迈向编程的大门了。
Java的HelloWorld原码实现如下所示
package net.ittimeline.javacore.object;
/**
* 我的第一个Java应用程序
*
* @author liuguanglei [email protected]
* @create 2018/10/14下午12:52
* @website www.ittimeline.net
* @since JDK11
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World With macOS & IntelliJ IDEA");
}
}
HelloWorld详解
package 后面跟包名,表示该类的存放相对目录,后期学习的Java默认权限就是同包访问权限。
Java是面向对象的程序设计语言,一谈到面向对象,就应该想到最基本的类和对象。类是存放程序的最小单元,使用class后面跟上类名即可,例如这里的class HelloWorld,而public是权限访问修饰符,意味着可以在任意地方访问该类。一个源文件中可以定义多个class,但是同一个源文件(例如这里的HelloWorld.java)中,只能有一个类是public的,并且和源文件名相同。
如果想要Java程序能够独立运行的方式之一,就是定义如下固定格式的main方法,该方法会被JVM调用,所有的代码都会从这里开始执行。
public static void main(String[]args){
}
而如果想要看到程序的运行结果,我们一般会将程序的结果输出到控制台,最简单的方式采用如下的代码片段。
System.out.println("Hello World With macOS & IntelliJ IDEA");
3.2.5 运行Java程序
在IntelliJ IDEA中运行Java程序,只需要点击如下图所示的按钮即可
当然还可以使用快捷键Fn+Control+Shift+F10运行Java程序。
3.3.3 将项目上传至GitHub
-
选择菜单Share Project On GitHub
-
设置项目的仓库以及描述信息
-
选择首次提交的内容
-
访问GitHub,查看首次提交的内容
3.3.3.4 添加ssh key
由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在此之前,必须要生成SSH key
通过使用如下命令生成
执行该命令时需要按三次回车
$ ssh-keygen -t rsa -C "[email protected]"
执行效果如下图所示
该命令会在/Users/${your-name}/.ssh目录下生成三个文件,可以使用ls命令查看,如下图所示
只需要把id_rsa_pub的内容添加到GitHub后,往后提交代码就不需要再输入密码了。
首先登录你的GitHub账号,选择Edit Profile,如下图所示
然后选择菜单SSH and GPG keys
然后创建一个ssh key
然后添加/Users/${your-name}/.ssh目录下的id_rsa.pub内容
添加成功之后的效果如下图所示
3.3.5 使用IntelliJ IDEA提交代码到GitHub
首先创建一个类Welcome.java,源码内容如下所示
package net.ittimeline.javacore.object;
/**
* Welcome
* @author liuguanglei [email protected]
* @create 2018/10/14下午2:31
* @website www.ittimeline.net
* @since JDK11
*/
public class Welcome {
public static void main(String[] args) {
System.out.println("Welcome Java");
}
}
当创建文件之后IntelliJ IDEA会提示自动提交代码到缓存区,因为Git在提交代码之前需要先将代码添加到暂缓区,如下图所示
然后选中项目javacore后,选择Commit Directory菜单,如下图所示
接着填写提交消息,确认提交文件列表后选择Commit and Push,如下图所示
在Push代码时,IntelliJ IDEA的Code Analysis能提示警告信息,如下图所示
最后选择提交的分支,点击右下角的Push便可推送至GitHub,如下图所示
IntelliJ IDEA本地的Git也可以看到提交记录,如下图所示
如果你的IntelliJ IDEA没有出现这个菜单,可以通过Fn+Command+F9打开该窗口。
以上是关于现代Java服务端开发核心技术之Java基础项目搭建的主要内容,如果未能解决你的问题,请参考以下文章