目录
EX1:间章(选读:手动构建maven项目)不感兴趣的友友们可以直接跳过
maven构建的Java web工程中pom.xml的部分注解
00.梦开始的地方
作为一个黑白键盘琴爱好者。今天,朋友给我发来一个src,说是可以用java实现弹钢琴的功能,还是兄弟懂我(手动doge)。但是本人现在的java水平还停留在idea>-新建项目>-package>-.java的水准上。
本期源码附上(来自github的某大佬):playPiano/src/main at main · gulihua10010/playPiano · GitHub
![](https://i-blog.csdnimg.cn/blog_migrate/7048032743fd7ed945c759a2ef2bb557.png)
![](https://i-blog.csdnimg.cn/blog_migrate/950afcef81a1eaa70993811b04a1eced.png)
当时,我在窃喜Test放的还算是比较明显。。。But!正所谓我永远不知道明天和意外哪个会先来
(一无所知的doge) 小问题,改包名。But!!!不改不要紧,一改红一片
![](https://i-blog.csdnimg.cn/blog_migrate/9834cc20bffc4cd20786bcfa89e4a6ac.png)
01.圆梦第一章
doge(应该还算比较机智的)我就突然(真的很突然)想起来了一直都在憧憬的那个完整的java项目的步骤,里面好像有一个叫Maven的东西。对!Maven!!!咩...吻...
于是,马不停蹄的去b站大学,搜了一下。找到了一个讲的相对来说时间比较短的课程。黑马程序员Maven全套教程,maven项目管理从基础到高级,Java项目开发必会管理工具maven_哔哩哔哩_bilibili
据听说尚硅谷里老师的课也不错,友友们有兴趣的也可以去看看,那个时间比较新(2022的哦)
于是,我就看到了这一幕,这,似曾相识的感觉(当时给孩子高兴坏了)
--------------------------------------------------火速maven整起---------------------------------------------------------
maven的下载与安装
maven官网下载地址:Maven – Download Apache Maven
可以看到从上到下的四个文件分别是linux安装文件、windows安装文件、linux源码、windows源码
我们下载第二个,也就是apache-maven-3.8.6-bin.zip
下载完成后,安装过程也很清爽,直接将zip文件解压到自己喜欢的目录就可以了,就像这样
(划重点)大家记好这个目录,conf文件夹里的settings.xml日后还会用得到
maven环境配置
设置maven自身的运行环境——配置MAVEN_HOME(以win11为例)
桌面右键单击此电脑,找到属性->高级系统设置->环境变量
新建变量MAVEN_HOME,变量值为刚才解压maven的目录(注意区分大小写)
再找到PATH,双击打开,为其新建%MAVEN_HOME%\bin变量(注意区分大小写)
确定,确定,确定...一直点到最后,以免保存不成功
maven仓库配置
此时的本地仓库位于C盘(系统盘)->Users->用户->.m2->repository,后期仓库用于储存jar包,可能后期会很大,我们将其移动到别的盘下。在这里,我以移动至D盘为例介绍(系统盘大空间的大佬可以忽视)据说有4T硬盘的大佬。
首先在D盘新建文件夹命名为maven,在maven里新建文件夹命名为repository
首先我们打开maven安装目录下conf文件夹下的settings.xml文件(记事本就可以打开,我用的notepad看起来会舒服一下)
找到这样一段代码()我的是在49-54行
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
在下面添加 <localRepository>刚刚创建的repository的地址</localRepository>,然后保存
maven镜像仓库配置(阿里云)
阿里云链接附上:仓库服务 一般我们用绿色圈起来的
还是,先打开maven安装目录下conf文件夹下的settings.xml文件,找到mirrors标签,一般在150行上下。
在<mirrors></mirrors>标签中添加 mirror 子节点:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>cental</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
(选配)配置maven全局jdk版本
找到未在注释标签内的<profiles></profiles>,通常在最底部上方,然后在他们之中添加指定jdk代码。
<!-- java version -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
EX1:间章(选读:手动构建maven项目)不感兴趣的友友们可以直接跳过
架构
创建测试项目文件夹-->在其内部创建src文件夹-->在其内部创建两个文件夹main、test-->分别在main、test中创建java、resources文件夹
在main-->java中打包com-->jiaan,编写主程序
package com.jiaan;
public class Demo{
public String say(String name){
System.out.println("hello" + name);
return "hello" + name;
}
}
在test-->java中打包com-->jiaan,编写测试程序
package com.jiaan;
import org.junit.Test;
import org.junit.Assert;
public class DemoTest{
@Test
public void testSay(){
Demo d = new Demo();
String ret = d.say("maven");
Assert.assertEquals("hellomaven",ret);
}
}
编写maven描述文件pom.xml在src同层目录下创建pro.xml
<?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>com.jiaan</groupId>
<artifactId>hello_maven</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
编译运行
win+r 运行cmd,进入src与pom所在目录
cd E:\桌面\hello_maven
编译maven,开始下载所用的插件
mvn compile
![](https://i-blog.csdnimg.cn/blog_migrate/f5588039e895e0499a41b80f3bb5b9bb.png)
至此编译完成。编译一个源文件至E:\桌面\hello_maven\target\classes
其他maven命令
清除
mvn clean //清理(删除创建的target目录及文件)
测试
mvn test //测试(加载测试组件)
如果在测试类里Assert.aeesrtEquals中hellomaven与demo类中字符拼接结果不同(多打了或少打空格符),则会出现以下报错信息
测试成功
测试报告将储存于项目根目录\target\surefire-reports
打包
mvn package
maven会完成编译、测试等过程
![](https://i-blog.csdnimg.cn/blog_migrate/d6a869fbd2ef2dcfe12d7c9cceb8c6c6.png)
安装到本地仓库
mvn instal
在安装jar包时,由group id决定第一层目录,项目名称artifactId决定二级目录,版本号决定第三级目录。
EX2:间章(选读:插件构建maven项目)
创建工程
mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
创建java工程
mvn archetype:generate
-DgroupId=com.jiaan
-DartifactId=java-hellomaven
-DarchetypeArtifactId=maven-archetype-quickstart
-Dversion=0.0.1-snapshot
-DinteractiveMode=false
创建web工程
mvn archetype:generate
-DgroupId=com.jiaan
-DartifactId=web-hellomaven
-DarchetypeArtifactId=maven-archetype-webapp
-Dversion=0.0.1-snapshot
-DinteractiveMode=false
02.圆梦第二章
配置maven
首先新建一个空项目(注意是空项目哦)
在文件(File)-->项目设置(Project Settings)-->项目(Project)-->SDK设置java版本,以1.8为例
在文件(File)-->设置(Settings)-->搜索maven,将maven主路径(Maven Home directory)更改为我们刚刚要求记住的路径(解压maven安装文件的路径)
然后更改用户设置文件(User settings file):点击重写(Override),目录为maven安装路径\conf\settings.xml
手工创建maven项目
代码编写
在这里,我介绍两种方法:
第一种:点击文件(File)-->新建(New)-->新模块(New Module)
第二种:点击右上角的小齿轮-->项目结构(Project Structure)-->模块(Module)-->新建模块(New)
接着,如需要使用原型的则使用Maven Archetype,这里我们创建常规Maven模块,使用新建模块(New Module),填写组ID(group id)与工作ID(artifactId即项目名称),点确定完成。
之后我们为其添加一个test目录下的resources文件夹(单击test目录,右键新建文件夹)并标注各个文件夹种类(选中文件夹,单击对应种类的样式按钮)
![](https://i-blog.csdnimg.cn/blog_migrate/8bf9be2dc96ca3aa62f360bcf50ff737.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6207a28b4674ce51f1d0468a53501dbe.png)
可以看到创建成功,等待右侧maven控制面板的插件下载完成
使用 <dependencies> </dependencies> 子标签<dependency></dependency>添加我们需要的测试jar包junit
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
一开始报错是因为还没有下载完jar包,等左右两边外部库(External Libraries)均加载好后,就可以看到junit包。标黄的警告和弱警告是因为junit版本不是最新,不用管,或者更新一下也可以。
在此顺便附上pom.xml
<?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>com.jiaan</groupId>
<artifactId>java01</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
给main-->java和test-->java中写入代码(我们在间章EX1中写到过,对具体架构感兴趣的友友们可以返回去看看)
package com.jiaan;
public class Demo{
public String say(String name){
System.out.println("hello " + name);
return "hello" + name;
}
}
package com.jiaan;
import org.junit.Test;
import org.junit.Assert;
public class DemoTest{
@Test
public void testSay(){
Demo d = new Demo();
String ret = d.say("jiaan");
Assert.assertEquals("hello jiaan",ret);
}
}
代码调试
使用右侧maven面板里的生命周期编译,双击需要的步骤即可
经过编译(compile)-->测试(test),发现错误,让我们到maven-project\java01\target\surefire-reports去查看测试结果
发现junit.assertEquals返回值比较错误。检查源码发现少打了一个空格(doge不好意思,主要为了是给大家引入一下target目录 doge)
我们把这个空格加上,继续clean-->compile-->test
成功了
代码调试(番外篇)
在这里,我给出另外一种快捷调试(doge其实也不怎么快捷,但是后面断点测试一点会使用到)
点击右上角圈出来的这个小三角-->编辑配置(Edit Configurations...)
点击加号-->选择Maven-->自定义一个名称(name)-->设置其工作的目录(Working directory)-->输入要进行的操作(Command line)-->确定(OK)
可以 看到在运行配置中已经有了我们刚刚自定义的操作,可以直接点击运行。如果要再添加运行配置,操作同上。
使用maven原型构建Java项目
首先,我们将刚刚的java01收起来,用之前介绍过的任意一种方法新建模块,这里用我自己习惯的方法建了。
熟悉的模块(Module)--> + -->新建模块(New)
这一次,我们选择Maven 原型(Maven Archrtype),自定义名称(即工作id),输入quick查找maven-archetype-quickstart原型来创建java,再为其编辑组id(group ID),完成创建。
啥也没有,先让它继续哗啦哗啦的加载一会
加载出来是这个样子的,还带了两个App,AppTest不过显然没有什么作用,删掉就可以了。而且,在main和test目录下,都没有resources文件夹,我们用之前说到的手工方法为其添加并标注文件夹类型标识。
再啰嗦一遍操作,单击选中目录文件夹-->右键新建-->目录
我们发现,贴心的idea和maven已经给出了我们选项,直接单击就ok了
把没什么用的那两个del掉就创建完成了
使用maven原型构建Java web项目
同刚才一样,我们将刚刚的java02收起来,再次新建模块。模块(Module)--> + -->新建模块(New)
选择Maven 原型(Maven Archrtype),自定义名称(即工作id)。这一次,我们输入web查找maven-archetype-quickstart原型来创建java web程序,同样,编辑组id(group ID),完成创建。
是不是看着短了点什么东西???
补全吧,和刚刚一样直接右键,新建目录,都有预设,不用自己一个一个的敲
使用原型构建项目结束!
导入comcat插件启动web工程
首先,我们到maven的坐标库中,查找tomcat maven,找到此段复制
链接附上: https://mvnrepository.com/search?q=tomcat%20maven&p=1
或到tomcat官网,找到 Maven Plugin,选择maven最新的2.2版本 打<build>标签,导入tomcat
<!-- 构建-->
<build>
<finalName>web01</finalName>
<!-- 设置插件-->
<plugins>
<!-- 具体的插件配置-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
等待maven面板导入完成
在tomcat7中打开tomcat7:run,启动服务器,得到一个链接,单击链接即可打开。
我们还可以通过在<plugin></plugin>标签中添加<port>标签设置其端口,添加<path>标签设置虚拟路径以提高其访问速度
<configuration>
<port>80</port>
<path>/</path>
</configuration>
为了方便运行,我们也可以为其添加一个调试配置,方法位于手动创建maven项目-->代码调试(番外篇)。编辑其名称,设置工作目录为web01,运行tomcat7:run
即可在右上角快速运行
至此,idea下maven配置已结束!!!
maven构建的Java web工程中pom.xml的部分注解
<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/maven-v4_0_0.xsd">
<!-- 指定maven pom的模型版本-->
<modelVersion>4.0.0</modelVersion>
<!-- 打包方式,web工程打包为war,java工程打包为jar-->
<packaging>war</packaging>
<!-- 组织id,通常为域名反写,作为坐标-->
<groupId>com.jiaan</groupId>
<!-- 项目名称,通常为项目名-->
<artifactId>web01</artifactId>
<!-- 版本号:release为开发板,snapshot为完成版-->
<version>1.0-SNAPSHOT</version>
<!-- 名称-->
<name>web01 Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- 设置当前工程的所有依赖-->
<dependencies>
<!-- 具体的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 构建-->
<build>
<finalName>web01</finalName>
<!-- 设置插件-->
<plugins>
<!-- 具体的插件配置-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
03圆梦终章
不忘初心,牢记使命。现在回到我们梦开始的地方——Idea 演奏piano
按刚刚的逻辑,新建项目,将对应的文件放好。当然会大片红色波浪,接下来就等待dependency的jar包解析完成吧!!!
test项目,报了一个无法访问,这里是因为新版的maven有一个类似http锁的东西
找到maven安装目录下conf文件夹下的settings.xml文件,把这一段注释掉。继续启动项目。
起风啦!!!!!!!!!!!
巴巴托斯的保佑
04风起,再启程!
通过对一个项目的加载,了解到了maven最基础的一些安装、配置和使用。
本人现在java刚刚学习结了面向对象,应该算是java se,听了个一知半解,还没有系统学习java web。
隐隐约约中好像发现piano中有spring或者是spring boot的影子。
对于本篇,还有许许多多的不理解之处,如junit是什么?@Test又是什么神奇的东东?web?spring?spring boot?MyBatis?SSM?这中间有什么神奇的联系?
以及一些以我现在的知识还不能确定是不是属于java编程的知识点,比如sql、Docker
如果有路过的大佬,方便的话还请指点迷津。听君一席话,胜读十年书!!!