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 标头?

Maven FTP部署:无法创建目录

如何从詹金斯访问maven属性?

向小军 “小黑” 正式加入 Maven Skateboards