maven
Posted 韩非囚秦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven相关的知识,希望对你有一定的参考价值。
1.Maven简介
Maven是基于项目对象模型(POM Project Object Model),可以通过一小段描述信息(配置文件)来管理项目的构建、报告和文档的软件项目管理工具。
Maven主要有两大作用:一是为项目的插件下载、编译、打包、测试、上传、文档生成、项目部署、版本管理等提供完善的项目管理,二是将各个子项目整合成一个系统的项目整体。它们都是通过maven的配置文件和pom.xml标签完成的。
2.Maven文件结构
Project
- src
- main
- java
- com.maven.maven01.model
- HelloWorld
- resources
- test
- java
- com.maven.maven01.model
- HelloWorldTest
- pom.xml
由于Maven提供了相关生命周期管理,所以只需要建好Maven约定的文件结构和pom.xml,就可以直接用mvn运行。
通常创建Maven文件结构,都是在Maven命令创先项目时,通过指定模板或者手动输入模板来完成的。
3.Maven项目创建
主要通过mvn archetype:generate命令来实现。maven提供了创新建一些项目的模板,通过手动或指定参数的方式,可以快速搭建起项目文件结构。
1.手动输入创建j项目
mvn archetype:generate
然后根据提示依次输入模板编号(系统输出1-7个模板选项,对应选择即可),groupId、archetypeId、version、package即可创建。
例如:
mvn archetype:generate
(以下开始系统输入) Choose archetype: 1...对应一个模板名字 ... 7...对应一个模板名字 Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 7:回车(默认设置) Define value for property ‘groupId‘: com.moon Define value for property ‘artifactId‘: moon-model Define value for property ‘version‘ 1.0-SNAPSHOT: 回车(默认设置) Define value for property ‘package‘ com.moon: 回车(默认设置)
Y: :回车(确认配置)
最后配置如下:
groupId: com.moon
artifactId: moon-model
version: 1.0-SNAPSHOT
package: com.moon
模板生成的文件结构为:
.
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── moon
│ └── App.java
└── test
└── java
└── com
└── moon
└── AppTest.java
2.输入参数创建
上面的依次输入参数创建和一次性执行一条命令。需要注意,创建模板时需要用-DarthetypeArtifactId指定那个模板名称。
mvn archetype:generate
-DarchetypeArtifactId=maven-archetype-quickstart
-DgroupId=com.moon
-DartifactId=moon-model
-Dversion=1.0-SNAPSHOT
-DinteractiveMode=false
-DdownloadSources=true -DdownloadJavadocs=true
4.Maven常用命令
- mvn -v 查看Maven版本号
- mvn compile 编译源码生成字节码文件,保存在target文件下,包含classes和maven-status子文件夹
- mvn test-compile 编译测试源码生成字节码文件,保存在target文件夹下的test-classes子文件夹中
- mvn test 运行测试,检查src下的test文件夹
- mvn package 将target文件夹下编译好的classes文件打包
- mvn clean 删除target文件
- mvn install 将jar包上传至本地仓库
- mvn site 生成项目文档,这里需要考虑到mvn插件版本匹配的问题,可以通过<build><plugins><plugin></plugin><plugins><build>指定插件
- mvn clean install 执行了mvn compile、mvn pacakge、mvn install、mvn clean
- mvn source:jar 项目打包
- mvn eclipse:eclipse 生成eclipse项目,对应的是mvn eclipse:clean,清除eclipse设置
- mvn idea:idea 生成idea项目,对应的是mvn idea:clean,清除idea设置
- mvn dependency:list 查看项目的dependency
5.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.0http://maven.apache.org/maven-v4_0_0.xsd" > <!--参考网址:http://maven.apache.org/guides/index.html--> <!--项目--> <groupId>反写的公司网址+项目名</groupId> <artifactId>项目名+模块名</artifactId> <versoin>>版本号</version> <packaging>打包的格式(*jar,*war,*zip,*pom)</packaging> <name>项目名</name> <url>项目地址</url> <description>项目描述</description> <developers>开发者信息</developers> <licenses>许可证信息</licenses> <organization>组织信息</organization> <!--设置全局属性--> <properties> <!--设置编码格式--> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--添加两个junit插件的属性,在dependency中引用使用即可--> <junit.version>3.8.1</junit.version> <junit.scope>test</junit.scope> </properties> <!--依赖列表--> <dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> <type></type> <!-- 依赖范围,只在test目录下能够引入 scope可以设置的依赖范围:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html --> <scope>test</scope> <!--设置依赖是否可选--> <option>false</option> <!--排除依赖,B.jar依赖A.jar,C.jar依赖B.jar,但C.jar不想依赖A.jar--> <exclusions> <exclusion></exclusion> </exclusions> </dependency> </dependencies> <!--依赖管理,一般写在父类pom.xml中,子依赖继承它--> <dependencyManagement> <dependency></dependency> </dependencyManagement> <!--示例 <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> // 使用properties中定义的属性 <version>${junit.version}</version> <scope>${junit.test}</scope> </dependency> </dependencies> </dependencyManagement> --> <!--依赖继承,一般写在子类pom.xml中,继承父类pom.xml--> <parent></parent> <!--示例 <parent> <groupId>com.hongxing</groupId> <artifactId>hongxing-parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> // 父类properties定义了junit.version和junit.scope属性,并且在dependency引用了该属性 // 这里就不用写了version和scope了,但是groupId和artifactId要写 </dependency> </dependencies> --> <!--插件管理--> <!--插件地址:http://maven.apache.org/plugins/index.html--> <build> <!--插件列表--> <plugins> <plugin> <groupId></groupId> <artifactId></artifactId> <version></version> </plugin> </plugins> </build> <!--示例 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <executions> <execution> <phase>test</phase> <goals> <goal>resources</goal> <goal>testResources</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> <version>2.7</version> </plugin> </plugins> </build> --> <!--聚合多个模块一起编译--> <modules> <Module>../hongxing-bge</Module> <Module>../hongxing-nge</Module> <Module>../hongxing-sg</Module> </modules> </project>
以上是关于maven的主要内容,如果未能解决你的问题,请参考以下文章
Spring+SpringMVC+MyBatis+Maven框架整合
关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段
如何在 Apache Felix maven-bundle-plugin 中设置 Provide-Capability 标头?