首页 > 其他分享 >maven

maven

时间:2023-06-17 23:11:53浏览次数:34  
标签:依赖 仓库 jar maven 编译 mvn

mvn -Pxxx 表示激活 id 为 xxx的profile (如有多个,用逗号隔开);
<profile>
<id>release-sdk</id>
<properties>
<mvn.profile.active>release-sdk</mvn.profile.active>
</properties>
<modules>
<module>kuaishou-cny2022-tiger-sdk</module>
</modules>
</profile>
sdk 发包需要指定参数 mvn -Prelease-sdk 表示把sdk激活,只发sdk的

maven pluginManageMent会统一管理插件
maven properties 会统一管理版本号,底下dependency可以引用
<properties>
<!-- 当前工程版本号 -->
<revision>1.0.4-SNAPSHOT</revision>
<springfox.version>2.9.2</springfox.version>
</properties>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox.version}</version>
</dependency>

mvn dependency:tree -Dverbose 表示查看冲突情况
groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
和依赖构建、分析和解决相关,这部分goal可以直接用maven的命令操作,例如:mvn dependency:tree


pom.xml插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<outputDirectory>${basedir}/../target/${artifactId}</outputDirectory>
</configuration>
</plugin>
maven工程打成jar包,并设置目录

<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
<configuration>
<pluginParameter>enable_deprecated=true</pluginParameter>
</configuration>
</execution>
</executions>
</plugin>
这个插件可以通过proto生成class文件

aven中scope作用:指定当前包的依赖范围和依赖的传递性,常见的可选值有:compile, provided, runtime, test, system
compile:为默认的依赖有效范围。如果在定义依赖关系的时候,没有明确指定依赖有效范围的话,则默认采用该依赖有效范围。此种依赖,在编译、运行、测试时均有效
provided:在编译、测试时有效,但是在运行时无效。例如:servlet-api,运行项目时,容器已经提供,就不需要Maven重复地引入一遍了
runtime:在运行、测试时有效,但是在编译代码时无效。例如:JDBC驱动实现,项目代码编译只需要JDK提供的JDBC接口,只有在测试或运行项目时才需要实现上述接口的具体JDBC驱动
test:只在测试时有效,例如:JUnit
system:在编译、测试时有效,但是在运行时无效。和provided的区别是,使用system范围的依赖时必须通过systemPath元素显式地指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用。systemPath元素可以引用环境变量

mvn生命周期:
清理clean:将以前编译得到的旧文件class字节码文件删除
编译compile:将java源程序编译成class字节码文件
测试test:自动测试,自动调用junit程序
打包package:动态Web工程打War包,java工程打jar包
安装install:Maven特定的概念-----将打包得到的文件复制到“仓库”中的指定位置
部署deploy:将最终的包复制到远程的仓库,以让其它开发人员与项目共享

如果子模块A引入了某依赖snapshot包 父模块没引这个依赖,只有子模块A是snapshot版本 其他模块都是release版本
如果common模块引入了某依赖snapshot包 父模块引了这个依赖,则所有模块都是snapshot版本

mvn compile后会生成target目录,存放的就是编译后的字节码文件
mvn clean会删除整个target文件夹

mvn命令参数:
-U 强制更新snapshot类型的插件或依赖库
-am 构建指定模块,同时构建指定模块依赖的其他模块
-pl --module_name 在指定模块上执行命令;
mvn clean -U install -pl kuaishou-sms-admin-web -am

Snapshot版本代表不稳定、尚处于开发中的版本,快照版本。
Release版本则代表稳定的版本,发行版本。

maven pom groupId是公司或组织域名+项目名,artifactId是模块名
maven坐标和仓库对应的映射关系:[groupId][artifactId][version][artifactId]-[version].jar
例如引入的依赖是:
<dependency>
<groupId>kuaishou</groupId>
<artifactId>zt-captcha-sdk</artifactId>
</dependency>
仓库中包路径是:m2/repository/kuaishou/zt-captcha-sdk/1.0.53/zt-captcha-sdk-1.0.53.jar

maven本地仓库和远程仓库
本地仓库:当前电脑上的仓库,路径是m2底下的
远程仓库:搭建在局域网中,一般公司都会有私服,私服一般使用nexus来搭建

maven依赖解析:
maven解析依赖信息时会到本地仓库中取查找被依赖的jar包,对于本地仓库中没有的会去中央仓库去查找maven坐标来获取jar包,获取到jar之后会下载。对于中央仓库也找不到依赖的jar包的时候,就会编译失败了

如果依赖的是自己或者团队开发的maven工程,需要先使用install命令把被依赖的maven工程的jar包导入到本地仓库中

举例:如果自己创建第二个maven工程HelloFriend,其中用到了第一个Hello工程里类的sayHello(String name)方法。我们在给HelloFriend项目使用 mvn compile命令进行编译的时候,会提示缺少依赖Hello的jar包。怎么办呢?
到第一个maven工程中执行 mvn install后,你再去看一下本地仓库,你会发现有了Hello项目的jar包。一旦本地仓库有了依赖的maven工程的jar包后,你再到HelloFriend项目中使用 mvn compile命令的时候,可以成功编译

pom <build>插件
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>2.1</version>
   <configuration>
      <!-- 源代码编译版本 -->
      <source>1.8</source>
      <!-- 目标平台编译版本 -->
      <target>1.8</target>
   </configuration>
</plugin>
该插件和编辑有关

mvn创建工程
mvn archetype:generate \
-DarchetypeGroupId=kuaishou \
-DarchetypeArtifactId=ks-boot-archetype-modules \
-DarchetypeVersion=1.0.0-SNAPSHOT \
-DinteractiveMode=false \
-DarchetypeCatalog=local \
-DgroupId=kuaishou \
-DartifactId=activity-checkpoint-passthrough \
-DprojectName=activity-checkpoint-passthrough \
-Dpackage=com.kuaishou.activity.checkpoint.passthrough

刚下载工程时,idea module的maven xml如果没有蓝色m,需要右键点击,选择add as maven project

idea jvm内存配置:
菜单 Help | Edit Custom VM Options
-Xms1g
-Xmx4g
-XX:ReservedCodeCacheSize=1g

maven:
Preferences | Build, Execution, Deployment | Build Tools | Maven (快捷搜索词:maven)
1、勾选 Always update snapshots,避免因为snapshot更新不及时导致编译不过
2、Importing把VM options for importer设置成 -Xmx5000M,遇到导入飘红则需要设置的更大

编译堆内存:
Preferences | Build, Execution, Deployment | Compiler(快捷搜索词:compiler)
Build process heap size (Mbytes): 2000


mvn checkstyle::check
可以报出编译问题

如果maven重新导入之后也找不到类,需要把对应module重新导入下

maven多环境yml配置文件切换和隔离:
maven增加多个yml文件,application.yml,application-dev.yml,application-test.yml
idea的maven可以选择激活哪个yml
maven命令行可以加入-Ptest指定运行哪个yml

 

标签:依赖,仓库,jar,maven,编译,mvn
From: https://www.cnblogs.com/MarkLeeBYR/p/17488457.html

相关文章

  • 【Nexus】Nexus创建Maven私服
    目录一、前言二、创建BlobStores1、在创建Repository之前,设定一个文件存储目录Blob,方便后序管理2、选择创建的Blob类型为File,根据需要选择是否超出约束时进行报警,以及约束类型和约束限制3、成功创建好的页面三、创建Repository(资源库)1、创建代理资源库ProxyRepository①、进入创......
  • idea的Maven配置问题:Cannot resolve plugin org.apache.maven....
    这明显就是一个坑!原因有两个方面。1、网络问题(我是这个原因)我们用的联通专线,在IP访问上有限制,导致我的Maven仓库一直下载不来,后来换了手机热点就好了。2、Maven仓库配置问题修改源:(1)阿里源<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>c......
  • maven-assembly-plugin和maven-compiler-plugin显示 not found,找不到
    <plugin><artifactId>maven-compiler-plugin</artifactId><version>3.7.0</version><configuration><source>1.8</source><target>1.8</target></configuration>&......
  • 【测试入门系列】Maven是什么
    Maven是什么?先用起来。结论在本文最后。使用步骤安装好maven后,在命令行执行如下命令,用maven初始化一个叫做helloworld的项目:$mvnarchetype:generate-DgroupId=com.mycompany.helloworld-DartifactId=helloworld-Dpackage=com.mycompany.helloworld-Dversion=1.0-SNAPSHOT一路......
  • IDEA-创建Maven项目
          ......
  • Maven的基本使用
      编译  它会在maven你自己定义或者默认的的本地仓库中下载用来进行编译的插件 同时生成targrt文件夹来保存编译后的字节码文件 清理 会删除掉target文件,同时也会下载插件  打包  会生成target文件夹并且会把打包后的文件放在里面,也会下载插件......
  • Maven概述
         ......
  • 上传自己java项目到maven中央仓库pom
    前提首先的你项目需要在Gitee或者Github上有仓库我这里以Gitee是的yhchat-sdk-core仓库为例开始在sonatype上创建问题访问sonatype注册并登录创建一个问题概要填仓库名称描述随意写写GroupId填写自己的域名,如果没有域名的话,可以自行百度使用Gitee、Github的域名需......
  • IDEA Spring Boot Maven 多环境
    源码地址:GiteeGitHub后端https://gitee.com/linjiabin100/pi-admin.githttps://github.com/zengpi/pi-admin.git前端https://gitee.com/linjiabin100/pi-admin-web.githttps://github.com/zengpi/pi-admin-web.git多环境的作用在于允许在不同的运行环境中......
  • maven简介
    maven查询maven依赖版本信息地址:https://mvnrepository.com/管理庞大的jar包;构建项目(依赖、打包、部署);阿里云镜像仓库<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexusaliyun</name><url>http://maven.ali......