Maven主要作用是使用它来导入第三方jar包
管理项目
下载地址:http://maven.apache.org/download.cgi
Binary:编译之后的二进制文件;
Source:表示可以查看源代码的,比Binary大一点;
tar.gz archive:Linux、macOS系统使用;
zip archive:windows系统使用;
打开 ./apache-maven-3.6.3/conf/settings.xml
<mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | --> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/central</url> </mirror> </mirrors>
<localRepository>/Users/zhongxin/maven_download</localRepository>
将解压后的文件夹移动到 /usr/local/apache-maven-3.6.3
$ vi ~/.bash_profile 进入文件后添加下面两行 export MAVEN_HOME=/usr/local/apache-maven-3.6.3 export PATH=$PATH:$MAVEN_HOME/bin 添加后保存 $ source ~/.bash_profile
第三方包仓库https://mvnrepository.com/
以解析json的第三方库 fastjson
为例
进入 mvnrepository
搜索想要使用的第三方包
找到需要使用的版本
拷贝xml内容
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.72</version> </dependency>
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>learn_java_maven</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.72</version> </dependency> </dependencies> </project>
fastjson工具类,静态方法
静态方法不需要创建对象,直接用 类名点 调用
import com.alibaba.fastjson.JSONObject;
待转化json
{"name": "张三","age": 18,"source": 100}
定义一个Student类来接收
package com.zhongxin.json; public class Student { private String name; private int age; private int score; public Student(String name, int age, int score) { this.name = name; this.age = age; this.score = score; } public Student() { } @Override public String toString() { return "Student{" + "name='" + name + '/'' + ", age=" + age + ", score=" + score + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } }
转化主函数
package com.zhongxin.json; import com.alibaba.fastjson.JSONObject; public class Json { public static void main(String[] args) { String json = "{/"name/": /"张三/",/"age/": 18,/"source/": 100}"; Student s = JSONObject.parseObject(json, Student.class); System.out.println(s); } }
输出:Student{name='张三', age=18, score=0}
在 pom.xml
中添加如下内容:
<properties> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> <!-- 文件拷贝时的编码 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- 编译时的编码 --> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> <aspectj.version>1.9.2</aspectj.version> </properties>
Student s2 = new Student("李四", 20, 90); String json2 = JSONObject.toJSONString(s2); System.out.println(json2);
输出{"age":20,"name":"李四","score":90}
Map<String, Object> map = JSONObject.parseObject(json, Map.class); System.out.println(map);
输出{name=张三, source=100, age=18}
String json3 = JSONObject.toJSONString(map); System.out.println(json3);
输出{"name":"张三","source":100,"age":18}
待转化:[{"name": "张三","age": 18},{"name": "李四","age": 16}]
定义 Teacher
类
package com.zhongxin.json; public class Teacher { private String name; private int age; public Teacher() { } public Teacher(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Teacher{" + "name='" + name + '/'' + ", age=" + age + '}'; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } }
转化
package com.zhongxin.json; import com.alibaba.fastjson.JSONObject; import java.util.List; public class Json2 { public static void main(String[] args) { String json = "[{/"name/": /"张三/",/"age/": 18},{/"name/": /"李四/",/"age/": 16}]"; List<Teacher> list = JSONObject.parseArray(json, Teacher.class); for (Teacher t : list) { System.out.println(t); } } }
输出内容:
Teacher{name='张三', age=18}
Teacher{name='李四', age=16}
使用Properties一般不使用Map接口的方法
Properties没有泛型,默认String
先要修改文件编码
新建一个 config.properties
文件 ../learn_java_maven/src/test/resources/config.properties
package com.zhongxin.properties; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class PropDemo { public static void main(String[] args) throws IOException { Properties prop = new Properties(); prop.setProperty("USERNAME", "张三"); prop.setProperty("PASSWORD", "123456"); System.out.println(prop.getProperty("USERNAME")); System.out.println(prop.getProperty("PASSWORD")); FileOutputStream fos = new FileOutputStream("src/test/resources/config.properties"); prop.save(fos, "注释"); fos.close(); } }
查看 config.properties
文件
#注释 #Sat Jul 18 10:05:03 CST 2020 USERNAME=张三 PASSWORD=123456
FileInputStream fis = new FileInputStream("src/test/resources/config.properties"); prop.load(fis); System.out.println(prop);
输出:{USERNAME=张三, PASSWORD=123456}
throws
try
往外抛出异常
可以进行异常捕获
try{ // 可能异常的代码 }catch(Exception e){ // 捕获异常,出现异常的解决方案 }finally{ // 释放资源 // 无论是否异常,一定会执行的代码 }