Maven基础学习详解

Maven安装

下载后放到一个没有中文的路径下,让后配置环境变量,具体请参阅其他文章

idea集成Maven

Maven基础学习详解_第1张图片
Maven home directory:可以指定本地 Maven 的安装目录所在,因为我已经配置了
M2_HOME 系统参数,所以直接这样配置 IntelliJ IDEA 是可以找到的。但是假如你没有配置的话,这里可以选择你的 Maven 安装目录。此外,这里不建议使用 IDEA 默认的。
User settings file / Local repository:我们还可以指定 Maven 的 settings.xml 位置和本地仓库位置。
Maven基础学习详解_第2张图片
Import Maven projects automatically:表示 IntelliJ IDEA 会实时监控项目的 pom.xml 文件,进行项目变动设置。
Automatically download:在 Maven 导入依赖包的时候是否自动下载源码和文档。默认是没有勾选的,也不建议勾选,原因是这样可以加快项目从外网导入依赖包的速度,如果我们需要源码和文档的时候我们到时候再针对某个依赖包进行联网下载即可。IntelliJ IDEA支持直接从公网下载源码和文档的。
VM options for importer:可以设置导入的 VM 参数。一般这个都不需要主动改,除非项目真的导入太慢了我们再增大此参数。

Maven 核心概念

约定maven项目目录结构

Maven基础学习详解_第3张图片

POM

Project Object Model:项目对象模型。将 Java 工程的相关信息封装为对象作为便于操作和管理的模型。Maven 工程的核心配置。可以说学习 Maven 就是学习pom.xml 文件中的配置。执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

POM 中可以指定以下配置:
项目依赖
插件
执行目标
项目构建 profile
项目版本
项目开发者列表
相关邮件列表信息

父POM

父(Super)POM是 Maven 默认的 POM。所有的 POM 都继承自一个父POM(无论是否显式定义了这个父 POM)。父 POM 包含了一些可以被继承的默认设置。因此,当 Maven 发现需要下载 POM 中的 依赖时,它会到 Super POM 中配置的默认仓库 http://repo1.maven.org/maven2 去下载。

Maven 使用 effective pom=(Super pom 加上工程自己的配置)来执行相关的目标,它帮助开发者在 pom.xml 中做尽可能少的配置,当然这些配置可以被重写。

POM标签大全

<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">
    
    <parent>
        
        <artifactId />
        
        <groupId />
        
        <version />
        
        <relativePath />
    parent>
    
    <modelVersion>4.0.0modelVersion>
    
    <groupId>asia.banseongroupId>
    
    <artifactId>banseon-maven2artifactId>
    
    <packaging>jarpackaging>
    
    <version>1.0-SNAPSHOTversion>
    
    <name>banseon-mavenname>
    
    <url>http://www.baidu.com/banseonurl>
    
    <description>A maven project to study maven.description>
    
    <prerequisites>
        
        <maven />
    prerequisites>  
    
    <licenses>
        
        <license>
            
            <name>Apache 2name>
            
            <url>http://www.baidu.com/banseon/LICENSE-2.0.txturl>
            
            <distribution>repodistribution>
            
            <comments>A business-friendly OSS licensecomments>
        license>
    licenses>
    
    <build>
        
        <sourceDirectory />
        
        <scriptSourceDirectory />
        
        <testSourceDirectory />
        
        <outputDirectory />
        
        <testOutputDirectory />
        
        <extensions>
            
            <extension>
                
                <groupId />
                
                <artifactId />
                
                <version />
            extension>
        extensions>
        
        <defaultGoal />
        
        <resources>
            
            <resource>
                
                <targetPath />
                
                <filtering />
                
                <directory />
                
                <includes />
                
                <excludes />
            resource>
        resources>
        
        <testResources>
            
            <testResource>
                <targetPath />
                <filtering />
                <directory />
                <includes />
                <excludes />
            testResource>
        testResources>
        
        <directory />
        
        <finalName />
        
        <filters />
        
        <pluginManagement>
            
            <plugins>
                
                <plugin>
                    
                    <groupId />
                    
                    <artifactId />
                    
                    <version />
                    
                    <extensions />
                    
                    <executions>
                        
                        <execution>
                            
                            <id />
                            
                            <phase />
                            
                            <goals />
                            
                            <inherited />
                            
                            <configuration />
                        execution>
                    executions>
                    
                    <dependencies>
                        
                        <dependency>
                            ......
                        dependency>
                    dependencies>
                    
                    <inherited />
                    
                    <configuration />
                plugin>
            plugins>
        pluginManagement>
        
        <plugins>
            
            <plugin>
                <groupId />
                <artifactId />
                <version />
                <extensions />
                <executions>
                    <execution>
                        <id />
                        <phase />
                        <goals />
                        <inherited />
                        <configuration />
                    execution>
                executions>
                <dependencies>
                    
                    <dependency>
                        ......
                    dependency>
                dependencies>
                <goals />
                <inherited />
                <configuration />
            plugin>
        plugins>
    build>
    
    <profiles>
        
        <profile>
            
            <id />
            
            <activation>
                
                <activeByDefault />
                
                <jdk />
                
                <os>
                    
                    <name>Windows XPname>
                    
                    <family>Windowsfamily>
                    
                    <arch>x86arch>
                    
                    <version>5.1.2600version>
                os>
                
                <property>
                    
                    <name>mavenVersionname>
                    
                    <value>2.0.3value>
                property>
                
                <file>
                    
                    <exists>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/
                    exists>
                    
                    <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/
                    missing>
                file>
            activation>
            
            <modules />
            
            <repositories>
            
            <pluginRepositories>
            pluginRepositories>
            
            <dependencies>
            dependencies>
    
    <dependencyManagement>
        <dependencies>
            
            <dependency>
                ......
            dependency>
        dependencies>
    dependencyManagement>
    
    <distributionManagement>
        
        <repository>
            
            <uniqueVersion />
            <id>banseon-maven2id>
            <name>banseon maven2name>
            <url>file://${basedir}/target/deployurl>
            <layout />
        repository>
        
        <snapshotRepository>
            <uniqueVersion />
            <id>banseon-maven2id>
            <name>Banseon-maven2 Snapshot Repositoryname>
            <url>scp://svn.baidu.com/banseon:/usr/local/maven-snapshoturl>
            <layout />
        snapshotRepository>
        
        <site>
            
            <id>banseon-siteid>
            
            <name>business api websitename>
            
            <url>
                scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
            url>
        site>
        
        <downloadUrl />
        
        <relocation>
            
            <groupId />
            
            <artifactId />
            
            <version />
            
            <message />
        relocation>
        
        <status />
    distributionManagement>
    
    <properties />
project>

仓库

本地仓库:存放下载到本地的jar包
中央仓库:架设在 Internet 上,为全世界所有 Maven 工程服务。
中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快的响应用户请求

你可能感兴趣的:(java,java,maven,spring,python,编程语言)