下载
https://maven.apache.org/download.cgi
安装
Windows
- 解压
- 配置环境变量,加入到 Path 路径中
- 验证是否有效
mvn -v
Mac
解压
配置环境变量 M2_HOME,加入到 Path 路径中
1 2 3 4 5 6
| vi ~/.bash_profile export M2_HOME=/Users/wangwz/apache-maven-3.6.3 export PATH=$PATH:$M2_HOME/bin
#退出后,执行下面命令使文件生效 source ~/.bash_profile
|
验证是否有效,输入 mvn -v ,输出如下,说明成功
1 2 3 4 5 6
| wangwz@wangwznoMacBook-Pro ~ % mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: /Users/wangwz/Desktop/Software/apache-maven-3.6.3 Java version: 15, vendor: Oracle Corporation, runtime: /Users/wangwz/Library/Java/JavaVirtualMachines/openjdk-15/Contents/Home Default locale: zh_CN_#Hans, platform encoding: UTF-8 OS name: "mac os x", version: "10.15.6", arch: "x86_64", family: "mac"
|
学习
强烈推荐
一、Maven 系列教程-入门
二、Maven 项目构建过程练习
三、使用 Maven 构建项目
archetype是mvn内置的一个插件,create任务可以创建一个java项目骨架
每一个骨架都会建相应的目录结构和一些通用文件,最常用的是 maven-archetype-quickstart 和 maven-archetype-webapp 骨架。maven-archetype-quickstart 骨架是用来创建一个 Java Project,而 maven-archetype-webapp 骨架则是用来创建一个 JavaWeb Project。
四、Maven 核心概念
五、聚合与继承
六、构建多模块项目
七、编码 gbk 的不可映射字符解决办法
1 2 3 4
| <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties>
|
八、使用 Nexus 搭建 Maven 私服「强烈推荐」
Maven 仓库理解和优先级
https://swenfang.github.io/2018/06/03/Maven-Priority/
仓库的优先级别为
本地仓库 > 私服 (profile)> 远程仓库(repository)和 镜像 (mirror) > 中央仓库 (central)
maven 资源搜索
Maven 依赖
依赖排除
如果本模块继承父模块依赖了某maven依赖,可以通过再依赖一遍并加上 scope:test 覆盖原依赖,达到不再依赖的结果
1 2 3 4 5
| <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <scope>test</scope> </dependency>
|
打包时排除测试
1 2
| //跳过测试-不执行测试用例,也不编译测试用例类 mvn clean package -Dmaven.test.skip=true
|
不打包,跳过该模块
1 2 3 4 5 6 7 8 9 10 11 12
| <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build>
|
打包时排除指定目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>static/**</exclude> <exclude>jeecg/**</exclude> </excludes> </resource> </resources> <resources> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <includes> <include>*.store</include> <include>*.xml</include> <include>templates/**</include> </includes> </resource> <resource> <directory>src/main/java</directory> <filtering>false</filtering> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build>
|
profiles 定义环境变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <profile.name>dev</profile.name> <prefix.name>jeecg</prefix.name> <config.server-addr>tcboot-nacos:7002</config.server-addr> <config.namespace/> <config.group>DEFAULT_GROUP</config.group> <discovery.server-addr>tcboot-nacos:7002</discovery.server-addr> </properties> </profile> <profile> <id>test</id> <properties> <profile.name>test</profile.name> <prefix.name>jeecg</prefix.name> <config.server-addr>tcboot-nacos:7002</config.server-addr> <config.namespace/> <config.group>DEFAULT_GROUP</config.group> <discovery.server-addr>tcboot-nacos:7002</discovery.server-addr> </properties> </profile> <profile> <id>prod</id> <properties> <profile.name>prod</profile.name> <prefix.name>jeecg</prefix.name> <config.server-addr>tcboot-nacos:7002</config.server-addr> <config.namespace/> <config.group>DEFAULT_GROUP</config.group> <discovery.server-addr>tcboot-nacos:7002</discovery.server-addr> </properties> </profile> </profiles>
|
springboot application.yml 引用环境变量
1 2 3 4 5
| spring: application: name: @artifactId@ profiles: active: @profiles.active@
|
jar 安装到本地仓库
安装
1 2 3
| mvn install:install-file -Dfile=/Users/mac126/work/lib/youtu-sms-sdk-1.0.0.jar -DgroupId=com.bjtcrj.sdk -DartifactId=youtu-sms-sdk -Dversion=1.0.0 -Dpackaging=jar
mvn install:install-file -Dfile=DmJdbcDriver18.jar -DgroupId=com.dameng -DartifactId=Dm8JdbcDriver18 -Dversion=8.1.1.193 -Dpackaging=jar
|
使用
1 2 3 4 5
| <dependency> <groupId>com.bjtcrj.sdk</groupId> <artifactId>youtu-sms-sdk</artifactId> <version>1.0.0</version> </dependency>
|
引用指定目录 jar 资源
在项目根目录下添加 lib 文件夹,然后将工程需要的 jar 文件复制到 lib 文件夹下
添加依赖到 pom.xml 文件中
- 单模块时,添加到项目 pom.xml
- 多模块时,添加到某模块 pom.xml「需要依赖资源的模块」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <dependency> <groupId>ldapjdk</groupId> <artifactId>ldapjdk</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/lib/ldapjdk.jar</systemPath> </dependency>
<systemPath>${basedir}/lib/ldapjdk.jar</systemPath>
<systemPath>${basedir}/../lib/ldapjdk.jar</systemPath>
|
查看 jar 文件 「gav」 信息方法如下:
- 打包时打入以上 jar 文件
配置阿里云镜像/仓库
参考:https://yq.aliyun.com/articles/695269
单个项目
项目 pom.xml 配置阿里云 maven 仓库。通过覆盖默认的中央仓库的配置,实现中央仓库地址的变更
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <repositories> <repository> <id>central</id> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public</url> <layout>default</layout> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>com.e-iceblue</id> <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories>
|
所有项目
修改 maven/conf/settings.xml,配置阿里云仓库镜像
匹配所有远程仓库
匹配仓库 repo1 和 repo2,使用逗号分隔多个远程仓库
<mirrorOf>repo1,repo2</mirrorOf>
匹配所有远程仓库,repo1 除外,使用感叹号将仓库从匹配中排除
<mirrorOf>*,!repo1</miiroOf>
1 2 3 4 5 6
| <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
|
排除私有镜像
示例:排除 jeecg getui-nexus
1 2 3 4 5 6
| <mirror> <id>nexus-aliyun</id> <mirrorOf>*,!jeecg,!jeecg-snapshots,!getui-nexus</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
|
配置本地仓库地址
修改 maven/conf/settings.xml
1
| <localRepository>/Users/mac126/study/maven-repo/repository</localRepository>
|
配置编译插件
pom.xml
1 2 3 4 5 6 7 8 9 10 11 12
| <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
|
依赖管理 - dependencyManagement
在项目根 pom.xml 中统一维护模块版本,并不会实际依赖,在业务模块依赖时不需要再指定版本号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <dependencyManagement> <dependencies> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-module-activiti</artifactId> <version>${boot.version}</version> </dependency> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-module-event</artifactId> <version>${boot.version}</version> </dependency> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-module-basic</artifactId> <version>${boot.version}</version> </dependency> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-module-scm-api</artifactId> <version>${boot.version}</version> </dependency> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-module-scm-biz</artifactId> <version>${boot.version}</version> </dependency> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-module-event-wx</artifactId> <version>${boot.version}</version> </dependency> </dependencies> </dependencyManagement>
|
settings.xml「推荐配置」
- 为默认中央方库 central 、jcenter 指定镜像 nexus-aliyun public 仓库
1 2 3 4 5 6
| <mirror> <id>nexus-aliyun</id> <mirrorOf>central,jcenter,!jitpack.io</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
|
- 添加更多其它代理仓库。频繁使用的可以配置在这里,只有指定项目用到,只需在项目
pom.xml中配置即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| <profile> <repositories> <repository> <id>jcenter</id> <url>https://maven.aliyun.com/repository/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>apache snapshots</id> <url>https://maven.aliyun.com/repository/apache-snapshots</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring</id> <url>https://maven.aliyun.com/repository/spring</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring-plugin</id> <url>https://maven.aliyun.com/repository/spring-plugin</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>google</id> <url>https://maven.aliyun.com/repository/google</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>gradle-plugin</id> <url>https://maven.aliyun.com/repository/gradle-plugin</url> </repository> <repository> <id>releases</id> <url>https://maven.aliyun.com/repository/releases</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>snapshots</id> <url>https://maven.aliyun.com/repository/snapshots</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>Igexin Repository</id> <url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url> </repository> </repositories> </profile>
|
注意
- 依赖本项目其它模块,不需要版本信息;依赖第三方依赖,必须指定版本信息
- IDEA自带maven版本高于 3.8.1 ,导致无法下载 http maven仓库资源,可以配置为本地 低版本maven