maven(一 基本操作 命令 标签)
原来一直没有使用maven 小公司,只是听说过这个东西,我没事就喜欢 去学习一些新东西。maven学了几次,但是 没有用上 所以 最后还是忘记了,或者说不知道怎么使用maven,一年半以前公司 改革 ,招了一个技术大牛,引入了一些那时候 感觉 很新颖的技术,maven,springboot kafka,nginx redis 等,那时候对一个小公司 来说,这些 技术 还是比较 高端了,今天 就说一说 使用maven创建项目的时候 和以后 普通项目的区别:
maven是什么,原来一直以为就是可以不用自己在网上去到处找jar包来 放到lib文件下了。只需要知道 一个jar包的地址 然后就 可以根据pom.xml文件配置 地址 然后就可以下载了,那时候 只知道是能这样干,(然后把自己的web项目拿去运行 一脸吗,懵逼 不知道怎么运行了,后面在说一下如何运行)后来 才发现 maven 其实提供的功能远不止这些。
如何创建一个maven项目:
src/main/java:主要放你项目的源文件,
src/main/resourecs:项目的配置文件
src/test/java:测试代码
src/test/resources:测试配置文件
target:目标文件,maven打出来的jar包 或者war包 都放在这个目录
pom.xml:maven的主要配置文件创建成了一个maven项目(如果创建 maven项目 不勾选的
话目录结构不是这样子:)
- 在此基础上说一下 maven命令的使用 maven管理项目分为:编译 测试 运行 打包 部署 运行过程 找到 项目 路径地址 打开 cmd窗口:
编译命令:mvn compile 将源文件生成.class文件
测试命令:mvn teset
清理命令:mvn clean 清理target 目录下的所有文件
打包命令:mvn package java项目打成jar包 web项目 打成war包如果想将自己的项目 打包 到本地仓库之中 ,可以使用 mvn install命令:
运行 maven web项目:mvn tomact:run 主要还是详聊一下pom.xml 文件里面的配置(我这边以我自己的一个pom父项目来聊 用到的比较多):
<packaging>pom</packaging> maven项目的打包类型 有 pom jar war web项目 打包war包 java项目 打成jar包 默认是jar包
pom所有父项目 都是pom 而不是 jar或者war ,父项目,有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build,表示该父项目中有两个子项目jiahou-hongbao-protobuf,以及jiahou-hongbao<modules>
<module>jiahou-hongbao-protobuf</module>
<module>jiahou-hongbao</module>
</modules><dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
</dependencies>
</dependencyManagement>dependencyManagement:从命名看来 依赖管理器,在父项目中 主要用于管理jar包 版本号 如果该项目的子项目 需要用到mysql-connector-java 的话 只需要:
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>不需要在加上版本号,所有的子项目都用8.0.13的版本号 如果需要 用自己的版本 号 则自己在添加对应的版本号。此时不在继承来自父项目的该jar包的版本号。
dependencies:作用可以理解是 引入声明在dependencies的所有jar包(版本号相同的话 子类也自动引入了jar包)
dependency:依赖注入,需要一个jar包 就 需要 一个dependency 所有的dependency 都 声明在 dependencies
- 关于mavne项目中的关于依赖传递有一个A 项目 依赖于B 项目 B 项目 又依赖于B 项目,则A 项目要使用B 项目的时候 则会引入 c项目。其实对于A 项目来说 只是要用到一些B 项目的功能,但是 也会引入C项目,导致本地仓库jar包变多,又假如A 项目 在引入B 项目的时候 AB 两个项目都引入了同一个jar包 但是 jar包版本不同 则可能导致 jar包冲突。如果父项目 依赖了 项目 x项目 但是子项目 又不需要依赖x项目 我们可以排除x项目:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<exclusions>
<exclusion>
<groupId>x</groupId>
<artifactId>x</artifactId>
</exclusion>
</exclusions>
</dependency>以上 表示 在 引入 mysql jar包的时候 排除 X
- 关于<build>标签:
<finalName>打出来的包的名字</finalName>
插件配置 如果不用一下配置 则 项目 效果是:
有时候一个项目 很大的时候(很多依赖jar包) 我们却要实jar包分离 可以可以使用:
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>*</exclude>
</excludes>
<filtering>true</filtering>
</resource>
</resources>pluginManagement的配置和plugins的配置是一样的,只是用于继承,方便 子项目模块中 可以直接 使用,不用在重新配置
<build>
...
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>pre-process-classes</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>pre-process</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
...
</build>子项目 只需要 :
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
</plugins>以上就是maven的一些 标签闲聊,还是有很多 工作中没有遇到的 如果 以上 有什么讲的不对。欢迎留言指正!!!
maven(一 基本操作 命令 标签)的更多相关文章
- centos7中bash: maven: 未找到命令... 解决办法
安装了maven,但在执行mvn -v或maven-versions时提示bash: maven: 未找到命令... 应该是环境变量出错,把MAVEN_HOME的路径换到PATH上就可以了,如下: e ...
- IDEA下使用Maven的test命令乱码
IDEA下使用Maven的test命令乱码的时候,加上 -Dfile.encoding=GBK 就可以解决啦 如下图所示: 或者在Maven的pom.xml文件中增加: <propert ...
- maven执行update命令时报org/apache/maven/shared/filtering/MavenFilteringException错误
原 maven执行update命令时报org/apache/maven/shared/filtering/MavenFilteringException错误 在eclipse中对准项目执行maven- ...
- Maven经常使用命令
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/UP19910522/article/details/25985021 Maven库: http:// ...
- maven的相关命令
maven的相关命令 mvn archetype:create :创建 Maven 项目 mvn compile :编译源代码(编译到target文件夹中) mvn test-compile :编译测 ...
- 【Maven】常用命令
[Maven]常用命令 转载:https://www.cnblogs.com/yangchongxing/p/10267028.html Maven Jar 搜索:https://mvnreposit ...
- Maven执行Reimport命令报错:See logs for details
Idea版本:2018.1.3 maven版本:3.6.2 Idea配置了本地下载的maven之后,不管是直接执行maven的Reimport命令,还是使用idea的Reimport按钮,都会报这个错 ...
- 【MAVEN】maven系列--pom.xml标签详解
pom文件作为MAVEN中重要的配置文件,对于它的配置是相当重要.文件中包含了开发者需遵循的规则.缺陷管理系统.组织.licenses.项目信息.项目依赖性等.下面将重点介绍一下该文件的基本组成与功能 ...
- maven中pom.xml标签介绍
pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以 ...
随机推荐
- ZOJ 1005:Jugs(思维)
Jugs Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge In the movie "Die Har ...
- C++学习(十八)(C语言部分)之 指针2
指针1.指针的概述 指针是什么? 指针是一个地址 是一个常量 int 整型 int a a是变量 指针用来做什么? 方便使用数组或者字符串 像汇编语言一样处理内存地址2.指针变量 什么是指针变量? 是 ...
- C++学习(七)(C语言部分)之 输入
输入学习时的笔记(其实也没什么用,留着给自己看的) 输出是指 把内容打印到控制台窗口 输入是指 把内容输入到程序里 scanfscanf 从键盘获取内容到程序里格式占位符+变量要加取地址符 1.格式占 ...
- log4net 自定义日志级别记录多个日志
程序中原来只记录一个日志,现在我要写一个用户操作日志,需要与原来的日志分开,在config文件中一阵折腾无果(要么写不全,要么写重了,反正没办法完美分离,要么与现存代码没办法完美兼容),差点放弃准备自 ...
- yum源更换为本地光盘
下面来示范一下如何使用光盘文件配置yum库.注意:一定要把/etc/yum.repos.d里的其他文件移到其他地方,否则会报错 进入到/etc/yum.repos.d目录中后创建Yum配置文件: [r ...
- MySQL Transaction--Sprint中访问只读从库的设置
问题描述 按照正常情况,从库上只执行查询,但在从库上发现有长时间未提交的事务,联系开发后确认程序的配置问题. 解决办法 修改前代码为(基于spring框架): 修改后的代码为: Spring事务中 ...
- SharePoint Online 怎样让用户只能拥有sub site 的权限
大家使用SharePoint 可能遇到这样的问题. 我怎样能设置manager 为site 的管理人员. 而我收下不同部门的员工只能访问他自己的sub site呢? 这个设置其实很简单. 1. 简 ...
- Lambda 表达式 是 个 好东东
Lambda 表达式 是 个 好东东 首先,通过 Lambda 表达式 + 动态语言特性 dynamic , C# 已经 可以 实现 函数式 编程 了 其次, 利用 Lambda, 可以 实现 AOP ...
- kibana 启动 关闭 和进程查找
启动kibana : nohup ./kibana & 查看启动日志 : tail -f nohup kibana 使用 ps -ef|grep kibana 是查不到进程的,主要原因大概 ...
- Linux中硬盘物理扇区与文件系统文件对应关系(转)
1 概述 系统读写文件过程中,如下面内核打印信息,报告读写某个扇区错误.那么我们如何能够通过sector找到读写哪个文件错误? kernel: end_request: I ...