Maven学习笔记-maven的标准目录结构

1.maven的标准目录结构

Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:
在这里插入图片描述

目录目的
${basedir}存放pom.xml和所有的子目录
${basedir}/src/main/java项目的java源代码
${basedir}/src/main/resources项目的资源,比如说property文件,springmvc.xml
${basedir}/src/test/java项目的测试类,比如说Junit代码
${basedir}/src/test/resources测试用的资源
${basedir}/src/main/webapp/WEB-INF}web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
${basedir}/target打包输出目录
${basedir}/target/classes编译输出目录
${basedir}/target/test-classes测试编译输出目录
Test.javaMaven只会自动运行符合该命名规则的测试类
~/.m2/repositoryMaven默认的本地仓库目录位置

2.手动创建一个maven项目

2.1. 我们可以根据Maven的项目规范去手动创建一个maven项目,以便帮助我们进一步理解

  1. 手动在文件夹中创建maven项目的文件结构
    在这里插入图片描述
  2. 创建java包结构和.java文件
package com.hao.test;

public class Hello {
	public static void main(String[] args) {
		String name = "qianghao";
		System.out.print(name);
	}
}
  1. 创建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/xsd/maven-4.0.0.xsd">
 
    <!-- 模型版本 -->
    <modelVersion>4.0.0</modelVersion>
    <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
 
    <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
    <artifactId>hello</artifactId>
 
    <!-- 版本号 -->
    <version>1.0</version>
</project>

POM : project object model 项目对象模型,pom.xml对于maven项目来说是最重要的配置文件,所有有关于构建过程的配置都需要在该文件中进行配置。

2.2. 所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version;

  • project:所有元素的跟标签;

  • groupId:该标签为工程组的标识,一般使用公司名称或域名;

  • artifactId:工程组下各个项目工程的标识,同一工程组下不同模块的项目就是靠该标签进行区分的;

  • version:工程的版本号;

我们可以把这三个必须字段看做是三维空间中的X、Y、Z坐标,我们可以根据一个固定的xyz定位到三维空间中的唯一一个点,同样的我们根据以上三个标签就在maven仓库中定位到任意一个唯一的项目
2.3. maven工程的坐标与maven仓库中路径的对应关系

<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>
    <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
 
    <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
    <artifactId>hello</artifactId>
 
    <!-- 版本号 -->
    <version>1.0</version>
</project>

我们可以根据Maven项目的坐标在本地仓库的根目录下找到我们的项目;

C:\Users\admin\.m2\repository\com\companyname\project-group\hello\1.0\hello-1.0.jar

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mtag5OJ0-1592386817710)(en-resource://database/551:1)]

3.常用的Maven命令

有关编译、测试、打包等构建相关的命令都需要在pom.xml所在的目录下执行;在这里插入图片描述

  1. mvn compile。
    编译主程序项目源代码。这个命令会在maven项目下生成target文件夹和对应的classes文件夹,并生成对应的字节码文件
    在这里插入图片描述
    执行结果:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. mvn clean
    对项目进行清理,清理的过程中会删除刚才target目录下编译的内容。
    执行结果:
    在这里插入图片描述在这里插入图片描述

  3. mvn test-compile
    编译测试程序项目源代码。
    在这里插入图片描述
    执行结果:
    在这里插入图片描述在这里插入图片描述

  4. mvn test
    对项目的运行测试。
    执行结果:
    在这里插入图片描述

  5. mvn package
    package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
    执行结果:
    在这里插入图片描述
    在这里插入图片描述

  6. mvn install
    install命令会将我们自己创建的项目安装到本地maven仓库中

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include <graphics.h> #include <stdio.h> #include <dos.h> #include <conio.h> #include <bios.h> #include <math.h> #define UP 1 #define DOWN 2 #define LEFT 3 #define RIGHT 4 #define PI 3.141592653 struct MyPcaman { int x; int y; int radius; int direction; }aPcaman; int isOver; void init(void); void movingPcaman(void); void initPcaman(void); void drawPcaman(void); void clearPcaman(void); void movePcaman(void); int main() { init(); movingPcaman(); closegraph(); return 0; } void init() { #define WALL 1 #define BEAN 0 #define N 10 char buffer[100]; int sence[N][N]; int a,b,c,d,k,i; int gdriver,gmode; FILE *fp; gdriver = DETECT; initgraph(&gdriver,&gmode,"."); setbkcolor(BLACK); cleardevice(); fp=fopen("E:\\123.txt","rt"); fscanf(fp,"%d,%d,%d,%d\n",&a,&b,&c,&d); i=0; while(fgets(buffer,100,fp)!=NULL) { for(k=0;buffer[k]!='\n';k++) { sence[k][i]=buffer[k]-'0'; if(sence[k][i]==1) { setcolor(GREEN); rectangle(48*k,48*i,48*(k+1),48*(i+1)); aPcaman.x =aPcaman.x; aPcaman.y =aPcaman.y; } if(sence[k][i]==0) { setcolor(YELLOW); circle(k*48+24,i*48+24,10); setfillstyle(1,YELLOW); floodfill(k*48+24,i*48+24,YELLOW); } } i++; } initPcaman(); } void initPcaman() { aPcaman.x =72; aPcaman.y = 72; aPcaman.radius = 15; aPcaman.direction = RIGHT; isOver = 0; } void movingPcaman() { int i; int key; while(!isOver) { drawPcaman(); for(i=0;i<15;i++) delay(5000); while(bioskey(1)) { key = bioskey(0); switch(key) { case 0x4800: aPcaman.direction = UP; break; case 0x5000: aPcaman.direction = DOWN; break; case 0x4b00: aPcaman.direction = LEFT; break; case 0x4d00: aPcaman.direction = RIGHT; break; case 0x011b:isOver = 1; break; } } clearPcaman(); movePcaman(); } getch(); } void drawPcaman() { switch(aPcaman.direction) { case RIGHT: setcolor(YELLOW); arc(aPcaman.x,aPcaman.y,45,315,aPcaman.radius); line(aPcaman.x,aPcaman.y,aPcaman.x+cos(PI/4)*15,aPcaman.y-sin(PI/4)*15); line(aPcaman.x,aPcaman.y,aPcaman.x+cos(PI/4)*15,aPcaman.y+sin(PI/4)*15); break; case UP: setcolor(YELLOW); arc(aPcaman.x,aPcaman.y,135,45,aPcaman.radius); line(aPcaman.x,aPcaman.y,aPcaman.x-cos(PI/4)*15,aPcaman.y-sin(PI/4)*15); line(aPcaman.x,aPcaman.y,aPcaman.x+cos(PI/4)*15,aPcaman.y-sin(PI/4)*15); break; case LEFT: setcolor(YELLOW); arc(aPcaman.x,aPcaman.y,225,135,aPcaman.radius); line(aPcaman.x,aPcaman.y,aPcaman.x-cos(PI/4)*15,aPcaman.y+sin(PI/4)*15); line(aPcaman.x,aPcaman.y,aPcaman.x-cos(PI/4)*15,aPcaman.y-sin(PI/4)*15); break; case DOWN: setcolor(YELLOW); arc(aPcaman.x,aPcaman.y,315,225,aPcaman.radius); line(aPcaman.x,aPcaman.y,aPcaman.x+cos(PI/4)*15,aPcaman.y+sin(PI/4)*15); line(aPcaman.x,aPcaman.y,aPcaman.x-cos(PI/4)*15,aPcaman.y+sin(PI/4)*15); break; } } void clearPcaman() { switch(aPcaman.direction) { case RIGHT: setcolor(BLACK); setfillstyle(1,BLACK); bar(aPcaman.x-20,aPcaman.y-20,aPcaman.x+20,aPcaman.y+20); arc(aPcaman.x,aPcaman.y,45,315,aPcaman.radius); line(aPcaman.x,aPcaman.y,aPcaman.x+cos(PI/4)*15,aPcaman.y-sin(PI/4)*15); line(aPcaman.x,aPcaman.y,aPcaman.x+cos(PI/4)*15,aPcaman.y+sin(PI/4)*15); break; case UP: setcolor(BLACK); setfillstyle(1,BLACK); bar(aPcaman.x-20,aPcaman.y-20,aPcaman.x+20,aPcaman.y+20); arc(aPcaman.x,aPcaman.y,135,45,aPcaman.radius); line(aPcaman.x,aPcaman.y,aPcaman.x-cos(PI/4)*15,aPcaman.y-sin(PI/4)*15); line(aPcaman.x,aPcaman.y,aPcaman.x+cos(PI/4)*15,aPcaman.y-sin(PI/4)*15); break; case LEFT: setcolor(BLACK); setfillstyle(1,BLACK); bar(aPcaman.x-20,aPcaman.y-20,aPcaman.x+20,aPcaman.y+20); arc(aPcaman.x,aPcaman.y,225,135,aPcaman.radius); line(aPcaman.x,aPcaman.y,aPcaman.x-cos(PI/4)*15,aPcaman.y+sin(PI/4)*15); line(aPcaman.x,aPcaman.y,aPcaman.x-cos(PI/4)*15,aPcaman.y-sin(PI/4)*15); break; case DOWN: setcolor(BLACK); setfillstyle(1,BLACK); bar(aPcaman.x-20,aPcaman.y-20,aPcaman.x+20,aPcaman.y+20); arc(aPcaman.x,aPcaman.y,315,225,aPcaman.radius); line(aPcaman.x,aPcaman.y,aPcaman.x+cos(PI/4)*15,aPcaman.y+sin(PI/4)*15); line(aPcaman.x,aPcaman.y,aPcaman.x-cos(PI/4)*15,aPcaman.y+sin(PI/4)*15); break; } } void movePcaman() { switch(aPcaman.direction) { case UP: aPcaman.y-=48; break; case DOWN:aPcaman.y+=48; break; case LEFT:aPcaman.x-=48; break; case RIGHT:aPcaman.x+=48; break; } if( ( aPcaman.x>=15&&aPcaman.x<=625)&&(aPcaman.y>=15 &&aPcaman.y<=465)) isOver = 0; else isOver = 1; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值