maven
Maven概念
maven的作用:
- Jar包的管理(父项目管理jar包版本,子项目添加jar包依赖);
- 工程之间的依赖管理(聚合工程中子项目的相互依赖);
- 自动打包(聚合工程会有多个项目,可以很方便的打包,以及编译插件配置)
Maven的常见打包方式:jar、war、pom
Pom工程一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理。聚合工程。
配置环境变量
maven官网下载Maven工具安装好后配置环境变量。
在系统变量里找到path,点击编辑,
把;%MAVEN_HOME%\bin;
配置文件
配置conf/setting.xml文件
配置本地仓库路径
<localRepository>D:\Programmer_QY\apache-maven-3.5.0\repository</localRepository>
配置远程仓库地址
<mirror>
<!--该镜像的id-->
<id>nexus-aliyun</id>
<!--该镜像用来取代的远程仓库,central是中央仓库的id-->
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<!--该镜像的仓库地址,这里是用的阿里的仓库-->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> <mirror> <id>uk</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://uk.maven.org/maven2/</url> </mirror> <mirror> <id>CN</id> <name>OSChina Central</name> <url>http://maven.oschina.net/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> <mirror> <id>nexus</id> <name>internal nexus repository</name> <!-- <url>http://192.168.1.100:8081/nexus/content/groups/public/</url>--> <url>http://repo.maven.apache.org/maven2</url> <mirrorOf>central</mirrorOf> </mirror>
jar打包到本地仓库
直接把jar包放到D盘根目录下,用mvn install命令将现成的jar包install到本地仓库。
mvn install:install-file -DgroupId=com.insigma -DartifactId=wxjy-common -Dversion=1.0.5-SNAPSHOT -Dpackaging=jar -Dfile=D:\wxjy-common-1.0.5-SNAPSHOT.jar
如果不想install到本地,可以直接放在项目的lib下面,然后用坐标指定jar的位置。
<dependency> <groupId>aut</groupId> <artifactId>aut-lib</artifactId> <version>1.0.5</version> <scope>system</scope> <systemPath>${project.basedir}/lib/wx-common-1.0.5-SNAPSHOT.jar</systemPath> </dependency>
检测Maven
mvn help:system
eclipse配置maven目录以及setting.xml路径。
IDEA版本和Maven版本对应
IDEA2017 -> Maven 3.5.0
IDEA2018 -> Maven 3.5.4
IDEA2021 -> Maven 3.6.3
如果maven版本过高会报错,详细。
打包
三种打包插件
maven-jar-plugin
maven-assembly-plugin
maven-shade-plugin
mvn clean compile #重新编译 mvn clean package #重新打包
带主类jar
mvn package命令打包,这样打包出来的jar包需要用jar -classpath *.jar com.*.*来运行,如果想带MainClass。需要在pom.xml中添加如下配置
<plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <archive> <manifest> <mainClass>com.gmtx.MainClass</mainClass> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> </manifest> </archive> <classesDirectory> </classesDirectory> </configuration> </plugin>
带依赖jar
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <!--打包时连同依赖包一起打包--> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>
使用此插件进行打包时,不再是使用mvn package 命令,而是使用mvn assembly:assembly命令。执行成功后会在target文件夹下多出一个以-jar-with-dependencies结尾的jar包。这个jar包中就包含了当前项目的所有依赖包。
导出依赖jar包
从Maven项目中导出项目依赖的jar包。可用于获取maven坐标的所有jar及依赖包。
mvn dependency:copy-dependencies
源码包sources.jar
<!--配置生成源码包--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin>
mvn source:jar命令可以生成sources.jar。
文档包doc.jar
<!--配置生成DOC包--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.10.4</version> <configuration> <encoding>UTF-8</encoding> <aggregate>true</aggregate> <charset>UTF-8</charset> <docencoding>UTF-8</docencoding> </configuration> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin>
生成doc命令,mvn javadoc:javadoc,生成后位于target/site/apidocs下面。