Maven的setting.xml和pom.xml的常用配置

Maven是什么:

Maven官方的定义是:Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
翻译一下:Apache Maven是一个软件项目管理和理解工具。 基于项目对象模型(POM)的概念,Maven可以从中央信息管理项目的构建,报告和文档。
Maven是java开发的,对于java来说万物皆对象,同样我们的项目也是对象,maven通过pom.xml文件来定义和配置一个项目,然后通过解析这个pom文件来构建和管理我们的项目,maven和springboot一样同样遵循约定大于配置的理念,给我们做了很多默认的配置和管理。

Maven的setting.xml和pom.xml:

setting.xml

setting.xml是maven在当前安装的物理机上的一个全局的配置,作为java开发一般主要关注的部分就两个地方:

**localRepository**:就是配置自己当前开发的这个机器的jar包放在哪里,也就是我们通常所说的本地仓库
**mirrors**:镜像列表,当我们本地仓库的jar包不支持我们当前工程的构建和运行时,这时候maven就会通过镜像列表中配置的镜像去下载我们所需要的jar包

当然如果我们作为公司的架构师或者研发主管,可能我们需要创建当前公司的一个私有的maven仓库这时候我们就需要关注:

**servers**:认证配置,maven配置账号、密码、分组,权限,可访问文件目录的地方
**proxies**:Http代理配置,当私有仓库没有我们需要的jar包了,就会通过代理来访问外部的maven仓库来下载jar包

当然如果我们需要更加深入的了解所有的setting配置,我们可以查阅对应版本的maven官方的信息,我使用的maven版本是3.6.0,地址为:

https://maven.apache.org/ref/3.6.0/maven-settings/settings.html

以下是maven中默认下的setting.xml文件的一些配置的注解



<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">


<localRepository>G:\mvn_localRepositorylocalRepository>

  
  <pluginGroups>
    
  pluginGroups>

  
  <proxies>
    
  proxies>

  
  <servers>
    
  servers>
 
 
  <mirrors>
	
	
	 <mirror>
		
		<id>alimavenid>
		
		<name>aliyun mavenname>
		
		<url>http://maven.aliyun.com/nexus/content/groups/public/url>
		<mirrorOf>centralmirrorOf>        
	mirror>
  mirrors>
  
  
  <profiles>
	 
	 <profile>
		  
		  <id>jdk-1.8id>
		  <activation>
			<activeByDefault>trueactiveByDefault>
			<jdk>1.8jdk>
		  activation>
		<properties>
			<maven.compiler.source>1.8maven.compiler.source>
			<maven.compiler.target>1.8maven.compiler.target>
			<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
		properties>
    profile>
  profiles>
  
  <activeProfiles/>
  
settings>

pom.xml

作为java开发比较关注而又不太清晰的地方:
modelVersion POM文件模型的版本,来源于当前物理机上安装的maven的超级POM的版本,工程下的pom.xml中我们没有配置的属性都是取这个超级pom文件中的值,这个超级文件在maven的安装目录的lib文件夹下的maven-model-builder-3.6.0.jar中
Maven的setting.xml和pom.xml的常用配置_第1张图片
超级pom文件中跟我们平时工作相关性比较高的地方:
Maven的setting.xml和pom.xml的常用配置_第2张图片
具体的还有些啥,你们可以去自己的maven目录下去找到这个文件去看
scope:当前依赖的作用范围,默认为:compile,其他选择:runtime, test, system, provided,分别作用是啥,官方介绍如下:
Maven的setting.xml和pom.xml的常用配置_第3张图片
compile:对整个程序的main和test中的代码均生效
test:只对maven项目中test中代码生效
provided:只在开发中有效,在打包,运行不生效
runtime:程序运行时有效
system:引入系统包,一般会影响跨平台部署,不建议使用
官方地址:

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

maven3.6.0的pom文件的官方配置信息的地址:

https://maven.apache.org/ref/3.6.0/maven-model/maven.html


<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
		 
    <modelVersion>4.0.0modelVersion>
	
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.3.1.RELEASEversion>
        <relativePath/> 
    parent>
	
	
    <groupId>com.examplegroupId>
	
    <artifactId>demoartifactId>
	
    <version>0.0.1-SNAPSHOTversion>
	
    <name>demoname>
	
    <description>Demo project for Spring Bootdescription>
    
	
    <properties>
        <java.version>1.8java.version>
    properties>

	
    <dependencies>
		
        <dependency>
			
			
            <groupId>org.springframework.bootgroupId>
			
            <artifactId>spring-boot-starter-testartifactId>
			
			<version>version>
			
            <scope>testscope>
			
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintagegroupId>
                    <artifactId>junit-vintage-engineartifactId>
                exclusion>
            exclusions>
        dependency>
    dependencies>


	
    <build>
		
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
	
	
	
	<modules>
		
        <module>module>
    modules>
	
	
	<issueManagement>
        
    issueManagement>
	
	
	<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>groupId>
                <artifactId>artifactId>
            dependency>
        dependencies>
    dependencyManagement>

project>

Maven的使用:

maven创建项目,maven创建项目类似于前端vue项目的脚手架,我们常用的类型有两种:

maven-archetype-quickstart
maven-archetype-webapp

当然maven创建项目的方式也有两种,一种是在你想要创建项目的目录下执行maven的命令:

mvn -B archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4

另外一种就在开发工具如idea、eclipse下
Maven的setting.xml和pom.xml的常用配置_第4张图片

**maven项目的目录结构:**
**pom**:pom是我们maven对于整个工程的一个定义和配置的文件,maven就是通过这个文件来构建和管理我们项目的
**src**:src下存放的是我们的代码和一些配置文件,以及资源文件,mian下面是源代码相关的,test下是测试相关的
**tartget**:编译,运行,测试,打包生成的相关的文件都会存放在该目录下

Maven的setting.xml和pom.xml的常用配置_第5张图片
maven常用的命令,如果不是开发工具内执行maven命令,一定要进入到你要执行命令的项目的pom文件所在的目录下执行这些命令:

**mvn clean**:清理target目录
**mvn compile**: 项目编译
**mvn test**:执行当前项目test目录下带有Junit注解的测试用例,同时会生成结果放在target目录下
**mvn package**: 按照pom文件制定的打包方式和插件打包,生成的包会在target目录下
**mvn install**:打包当前项目,同时将当前项目的打包文件发布到本地仓库
**mvn deploy** 发布到当前项目的jar包到本地仓库和远程仓库,在项目组协同工作时,基础jar包的更新必须有这个操作,否则其他项目引入就报错了,当然需要配置对应的发布仓库的地址

你可能感兴趣的:(打包部署,java,后端,运维,maven,spring,boot)