当前位置:网站首页>8软件工程环境
8软件工程环境
2022-06-29 23:53:00 【马孔多镇长】
软件工程环境
第三方库
概念
️ 某个编程语言在安装好开发环境之后,默认会提供API。除此之外,还可以有第三方提供代码库(我们称之为第三方库,一般为jar格式),我们可以通过第三方库提供的API来使用某些已有的功能,而不需要自己来实现;
jar文件什么?
️ jar文件就是第三方库,是一个压缩文件,可以使用解压软件打开,里面包含的都是class文件,即编译好的,可在JVM上运行的字节码;
️ 一个Java程序基于某个第三方库来实现某些功能时,改第三方库也成为该Java程序的依赖包;
第三方库就是API吗?
️ API:即application programming interface,应用程序接口;
️ 第三方库就是一个提供API的仓库;
如何使用第三方库?
️ 在Java中,使用第三方库,主要体现在开发Java代码时引入依赖(依赖就是开发时所要用到的资源或工具支持);
1、在cmd中使用第三方库
️ 我们尝试使用依赖将代码输出打印的字体变为彩色;
️ 首先使用普通文本编辑器编写下面的Java代码后保存在本地:
//import引入依赖
import org.fusesource.jansi.AnsiConsole;
import static org.fusesource.jansi.Ansi.Color.*;
import static org.fusesource.jansi.Ansi.ansi;
public class Main {
public static void main(String[] args) {
AnsiConsole.systemInstall();
int lineNumber = 0;
System.out.print( ansi().fg(MAGENTA).a(++lineNumber));
System.out.println( ansi().fg(CYAN).a("面试官:").fg(RED).a("你都会什么编程语言?") );
System.out.print( ansi().fg(MAGENTA).a(++lineNumber));
System.out.println( ansi().fg(BLUE).a("我: ").fg(GREEN).a("精通C、C++、Java、HTML、JavaScript等语言,的单词拼写") );
System.out.print( ansi().fg(MAGENTA).a(++lineNumber));
System.out.println( ansi().fg(CYAN).a("面试官:").fg(RED).a("就这?会什么系统嘛?") );
System.out.print( ansi().fg(MAGENTA).a(++lineNumber));
System.out.println( ansi().fg(BLUE).a("我: ").fg(GREEN).a("精通Windows、Mac、Linux系统,的关机") );
AnsiConsole.systemUninstall();
}
}
️ 将上述代码保存后,进入cmd进行编译;

️ 编译发生错误;
️ 根据提示信息,因为找不到依赖包,所以发生错误,这个时候我们就要引入依赖包:
javac -cp "D:\CodeResource\Maven_repository\Repository\Maven\org\fusesource\jansi\jansi\2.3.3" Main.java
️ 运行结果如下

️ 看提示信息好像是编码格式出现错误,再输入以下代码:
java -cp "D:\CodeResource\Maven_repository\Repository\Maven\org\fusesource\jansi\jansi\2.3.3" -encoding utf-8 Main.java
️ 运行后会在Main.java所在目录里生成一个Main.class文件;

️ 再输入下面的命令:
java -cp ".;D:\CodeResource\Maven_repository\Repository\Maven\org\fusesource\jansi\jansi\2.3.3" Main
#.;表示当前路径
️ 输出结果为:

构建工具
背景
️ 从上述操作可以看出,我们仅仅是想输出彩色字体,操作就这么复杂,如果想做一些更花里胡哨的内容,那工作量还不直接把人给整emo了啊;所以为了让编程变得更加方便,便有了项目构建工具;
常见的项目构建工具
️ 对于Java项目来说,使用比较多的构建工具主要有三种:
️ Ant:比较老的一款构建工具,构建时需要自行制定编译路径、资源路径等,依赖包还是需要自行下载,目前主流的项目都不再使用;
️ Maven:采取“约定由于配置”的思想,约定好编译路径、资源路径等,依赖包可以从网络自行下载,Maven主要基于XML文件进行配置;目前Java服务端项目大多使用Maven来构建;
️ Gradle:和Maven功能非常类似,只是采取基于Groovy脚本语言的DSL语法进行配置,安卓开发几乎用的都是Gradle;
关于maven
️ Maven是一个项目构建工具,创建的项目只要遵循Maven规范(称为Maven项目),即可使用Maven来 进行管理:编译,打包等。
maven安装
️ 下载解压,下载地址为:版本3.6.3;
️ 下载后解压到任意文件夹,解压后打开结构如下:

配置环境变量
️ 右键”此电脑“,点击”属性“,并打开”高级系统设置“中的”环境变量“,添加Maven环境变量;
️ 先定义Maven根路径变量 M2_HOME;
️ 再在 Path 环境变量中,添加Maven工具bin目录为全局命令路径;
️ 检测安装配置是否成功;
maven介绍
全局依赖管理
️ maven项目中可以引入依赖包;
️ 引入依赖包时,优先在本地maven仓库中搜索,搜索不到时,再去远程仓库中搜索;
本地仓库配置
️ 找到maven根目录下的conf目录,找到setting.xml文件;
️ 使用记事本工具打开;
️ 找到下面代码:

️ 将红色框里的代码添加到图中位置(路径要改);
️ 这样的话我们本地仓库就配置好了,以后把下载的依赖包放入这个路径就可以了;
在IDEA中配置maven本地仓库
️ 打开IDEA,随便打开一个项目;
️ 点击文件-设置–新项目设置-新项目的设置
️ 点击构建、执行、部署-构建工具-maven
️ 在右侧界面找到maven主路径,改为你下载的maven工具的存放路径;
️ 用户设置文件和本地仓库当然也要重写,用户设置文件路径改为上面修改后的setting.xml文件的路径,本地仓库路径就是上面本地仓库的路径;

创建maven项目
️ 打开IDEA,点击新建项目,选择maven(IDEA不同版本布局不同);

️ 点击下一步

️ 名称和位置可以任意设置;
️ 组ID:组织id、组织名,一般使用公司的域名,如com.alibaba;同时按规范,自己写的java都在这样的包下;
️ 工件ID:产品id、产品名,项目即产品,所以一般使用本项目名,多个英文之间用-间隔;
️ 版本:产品的版本号,本项目可能有多个版本提供给别人使用;
️ 完后创建后,看左侧目录结构;

️ main目录下的Java目录用来存放开发用的Java代码;
️ main目录下的resources目录用来存放开发用的配置文件;
️ test目录下的java目录用来存放单元测试Java代码;
️ 手动在test目录下创建一个resources目录,用来存放测试资源;
️ 尝试创建一个Java类并进行编译,观察左侧目录结构变化;
️ 在src/main/resources目录下,创建一个配置文件(任意文件都行,以下为创建的 test.xml 文件);
️ 在 src/main/java 目录下,随便创建一个类,编写 main 方法运行后,会生成编译结构,如下图;

️ 目录target下的classes目录,为将我们写的Java类编译为class文件后存放的路径;
️ 同时该路径下又存放了我们刚才添加的xml文件;
maven项目配置
️ 在我们上面构建maven项目中,有一个pom.xml文件,这个就是maven项目的配置文件,maven项目构建工具就是基于该配置文件来对maven项目进行管理的;
️ 该xml文件 的格式采取一种叫”项目对象模型“的概念(Project Object Model,简称POM),因此 Maven给这个文件取名为 pom.xml;
️ 在IDEA中点击打开该xml文件;
️ 在代码里找到<maven.compiler.source>和<maven.compiler.target>,将两个标签中的数字都改为1.8,1.8是我们使用的jdk的版本;
️ 找到<dependencies>标签,把其中的内容改为下列代码(若没有该标签,直接将改代码复制粘贴到</project>上面);
<dependencies>
<dependency>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
</dependencies>
maven的生命周期
️ 在IDEA最右边的侧边栏中,点击maven,找到生命周期目录;
️ clean:用于删除target目录;
️ compile:编译开发代码和资源文件;
️ package:将整个项目打包;
️ deploy:将项目上传到私服仓库;
软件运行时的依赖资源
运行时的环境
️ 对于Java程序来说,JRE就是必须的运行时环境;
️ JDK是Java程序开发需要的环境,JDK包含了JRE;
程序代码
️ 对于Java程序来说,class文件就是运行时需要的程序代码;
外部资源
️ 外部资源包括:数据库、文件资源等;
内部资源
️ 对于Java程序来说,运行时所要用到的文件,除了class文件外,都属于内部资源;
日志
️ 在生产环境中,如果没有日志文件,那几乎很难定位到程序出现的问题;
️ JDK是Java程序开发需要的环境,JDK包含了JRE;
程序代码
️ 对于Java程序来说,class文件就是运行时需要的程序代码;
外部资源
️ 外部资源包括:数据库、文件资源等;
内部资源
️ 对于Java程序来说,运行时所要用到的文件,除了class文件外,都属于内部资源;
日志
️ 在生产环境中,如果没有日志文件,那几乎很难定位到程序出现的问题;
边栏推荐
- FPGA Development (1) -- serial port communication
- Digital collection of cultural relics, opening a new way of cultural inheritance
- Serialization of binary tree 297 Serialization and deserialization of binary tree 652 Find duplicate subtrees
- Viewing splitchunks code segmentation from MPX resource construction optimization
- What is online account opening? In addition, is it safe to open a mobile account?
- Machine learning: the concept and application of VC dimension
- Why is JSX syntax so popular?
- vlog常用参数解析
- 6.28 problem solving
- xutils3传集合
猜你喜欢

Basic operations such as MySQL startup under Windows platform

Halcon practical: design idea of solder joint detection

Applet plug-in access, development and precautions

Sword finger offer 14- ii Cutting rope II

Leetcode (76) -- Minimum Covering substring

Siemens low code version 9.14: meet different needs
![[Shangshui Shuo series] day 8](/img/66/2aaa82f122612db1775bdd45556d97.png)
[Shangshui Shuo series] day 8

Overseas digital authentication service provider advance AI was selected into the "2022 brand sea Service Market Research Report" of equalocean

The role of VMware virtual machine

Common knowledge of ECS security settings
随机推荐
雲和恩墨蓋國强,識別它、抓住它,在國產數據庫沸騰以前
网上开户选哪个证券公司?还有,在线开户安全么?
Gradle连载7-配置签名
Buffer flow exercise
What is flush software? Is it safe to open an account online?
Serialization of binary tree 297 Serialization and deserialization of binary tree 652 Find duplicate subtrees
Inspiration collection · evaluation of creative writing software: flomo, obsidian memo, napkin, flowus
西门子低代码 9.14版本: 满足不同需求
How to view the CPU cores and threads in win11? Win11 view the tutorial of how many cores and threads the CPU is
Official website of Greentree
The role of VMware virtual machine
这次的PMP考试(6月25日),有人欢喜有人忧,原因就在这...
数莓派 4怎么样?可能的玩法有哪些?
Sword finger offer 13 Range of motion of robot
QT learning 03 birth and essence of QT
LC: maximum subarray and
MySQL:SQL概述及数据库系统介绍 | 黑马程序员
Binary search tree 230 The element with the smallest K in the binary search tree 1038 From binary search tree to larger sum tree
一步步教你在Edge浏览器上安装网风笔记
AI chief architect 9- huxiaoguang, propeller model library and industry application