Maven 是 Apache 开源组织奉献的一个开源项目。Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需做一些简单的配置,就可以批量完成项目的构建、报告和文档的生成工作。
作用一 个人理解maven主要是用来解决导入java类依赖的jar,编译java项目主要问题。(最早手动导入jar,使用Ant之类的编译java项目)
以pom.xml文件中dependency属性管理依赖的jar包,而jar包包含class文件和一些必要的资源文件。
当然它可以构建项目,管理依赖,生成一些简单的单元测试报告,像现在公司的持续集成都广泛的使用maven,当你接触一些项目以后你就会有更深的体会。
作用二 比如之前项目导入jar。是通过copy方式导入项目中,而且还会存在jar之间的依赖和冲突。而maven解决了这些问题,只是网速不好的时候有点麻烦。只需要下载-bin.zip就可以了
作用三 jar 包管理,防止jar之间依赖起冲突 。小组之间建立个私服务,大家都用通用 的maven配置文件,不用自己手动去下载jar ,pom文件会自动管理下载好的jar包。
作用四 Maven是基于项目对象模型,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven能够很方便的帮你管理项目报告,生成站点,管理jar文件,等等。例如:项目开发中第三方jar引用的问题,开发过程中合作成员引用的jar版本可能不同,还有可能重复引用相同jar的不同版本,使用maven关联jar就可以配置引用jar的版本,避免冲突。
变量值内容如下:
在安装目录下找到settings.xml文件例如 D:\Java\apache-maven-3.6.3\conf
替换以下内容
<?xml version="1.0" encoding="UTF-8"?> <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"> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> </servers> <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> <profiles> </profiles> </settings>mvn -v //查看版本 mvn archetype:create //创建 Maven 项目 mvn compile //编译源代码 mvn test-compile //编译测试代码 mvn test //运行应用程序中的单元测试 mvn site //生成项目相关信息的网站 mvn package //依据项目生成 jar 文件 mvn install //在本地 Repository 中安装 jar mvn -Dmaven.test.skip=true //忽略测试文档编译 mvn clean //清除目标目录中的生成结果 mvn clean compile //将.java类编译为.class文件 mvn clean package //进行打包 mvn clean test //执行单元测试 mvn clean deploy //部署到版本仓库 mvn clean install //使其他项目使用这个jar,会安装到maven本地仓库中 mvn archetype:generate //创建项目架构 mvn dependency:list //查看已解析依赖 mvn dependency:tree //看到依赖树 mvn dependency:analyze //查看依赖的工具 mvn help:system //从中央仓库下载文件至本地仓库 mvn help:active-profiles //查看当前激活的profiles mvn help:all-profiles //查看所有profiles mvn help:effective -pom //查看完整的pom信息
1. 添加打包插件
注意:多模块项目仅仅需要在启动类所在的模块添加打包插件即可!!不要在父类添加打包插件,因为那样会导致全部子模块都使用spring-boot-maven-plugin的方式来打包(例如BOOT-INF/com/hehe/xx),而mm-web模块引入mm-xx 的jar 需要的是裸露的类文件,即目录格式为(/com/hehe/xx)。在总pom.xml 中添加打包插件:
<!--多模块打包:只需在启动类所在模块的POM文件:指定打包插件 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <skipTests>true</skipTests> <!--默认关掉单元测试 --> </configuration> </plugin> </plugins> </build>在conteoller代码中添加pom.xml 中添加打包插件:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--制定启动项 --> <mainClass>com.boss.bes.basedata.BossBesBasedataCenterApplication</mainClass> <layout>ZIP</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>2. 打包工程 首先在IDE打开Maven插件,然后在聚合父工程spring-boot-integration中点击 clean ,然后点击 package 进行打包。如图: 打包效果如下:
[INFO] --- spring-boot-maven-plugin:2.2.2.RELEASE:repackage (default) @ boss-bes-basedata-controller --- [INFO] Layout: ZIP [INFO] Replacing main artifact with repackaged archive [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for boss-bes-basedata-center 0.0.1-SNAPSHOT: [INFO] [INFO] boss-bes-basedata-center ........................... SUCCESS [ 0.005 s] [INFO] boss-bes-basedata-pojo ............................. SUCCESS [ 7.531 s] [INFO] boss-bes-basedata-config ........................... SUCCESS [ 1.635 s] [INFO] boss-bes-basedata-dao .............................. SUCCESS [ 1.120 s] [INFO] boss-bes-basedata-service .......................... SUCCESS [ 1.048 s] [INFO] boss-bes-basedata-api .............................. SUCCESS [ 5.035 s] [INFO] boss-bes-basedata-controller ....................... SUCCESS [ 3.525 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 21.005 s [INFO] Finished at: 2020-07-01T15:15:18+08:00 [INFO] ------------------------------------------------------------------------打包地址默认在Target目录: 3. 启动项目 通过命令行启动项目:
java -jar boss-bes-basedata-controller-0.0.1-SNAPSHOT.jar启动效果如下: 在这里插入图片描述