前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >maven详解

maven详解

作者头像
姜同学
发布2022-10-27 15:58:05
4210
发布2022-10-27 15:58:05
举报
文章被收录于专栏:姜同学姜同学

什么是maven

代码语言:javascript
复制
基于项目对象模型(pom)的概念,通过中央信息片段管理一个项目的创建,
报告生成的项目管理工具。

maven目录结构

代码语言:javascript
复制
artifactId(maven项目)
    --src
         --main
        --java(存放java代码)
        --resources(存放配置文件)
         --test
            --java(存放测试代码,打包时不会进行包装)
    --target(存放编译之后的代码)
    --pom.xml(存放依赖的地方)

导入依赖的过程

代码语言:javascript
复制
当创建的项目进行编译时,会识别pom.xml中的依赖,首先maven会识别安装目录下conf文件夹下的
settings.xml寻找本地库的路径并匹配有无依赖对应的jar包,如果没有会去远程库(镜像库(阿里或者网易)maven中央库)中去下载对应的jar包。

maven常用命令管理项目的生命周期

代码语言:javascript
复制
创建 mvn archetype:generate
会先加载maven创建项目用到的依赖,如果没有依赖对应的jar包会去下载,然后进入选择
创建项目的骨架,默认选项为(普通java项目),我们还需要知道是web项目就可以了。
然后依次编辑groupId,artifactId,version信息(默认1.0-SNAPSHOT),package(默认为
groupId),Y确认信息。

E:\mvn_test>mvn archetype:generate
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.1.0:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.1.0:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.1.0:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[WARNING] No archetype found in remote catalog. Defaulting to internal catalog
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: internal -> org.apache.maven.archetypes:maven-archetype-archetype (An archetype which contains a sample archetype.)
2: internal -> org.apache.maven.archetypes:maven-archetype-j2ee-simple (An archetype which contains a simplifed sample J2EE application.)
3: internal -> org.apache.maven.archetypes:maven-archetype-plugin (An archetype which contains a sample Maven plugin.)
4: internal -> org.apache.maven.archetypes:maven-archetype-plugin-site (An archetype which contains a sample Maven plugin site.
      This archetype can be layered upon an existing Maven plugin project.)
5: internal -> org.apache.maven.archetypes:maven-archetype-portlet (An archetype which contains a sample JSR- Portlet.)
6: internal -> org.apache.maven.archetypes:maven-archetype-profiles ()
7: internal -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
8: internal -> org.apache.maven.archetypes:maven-archetype-site (An archetype which contains a sample Maven site which demonstrates
      some of the supported document types like APT, XDoc, and FML and demonstrates how
      to i18n your site. This archetype can be layered upon an existing Maven project.)
9: internal -> org.apache.maven.archetypes:maven-archetype-site-simple (An archetype which contains a sample Maven site.)
10: internal -> org.apache.maven.archetypes:maven-archetype-webapp (An archetype which contains a sample Maven Webapp project.)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 7: 7
Define value for property 'groupId': com.jmy
Define value for property 'artifactId': mavendemo02
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' com.jmy: :
Confirm properties configuration:
groupId: com.jmy
artifactId: mavendemo02
version: 1.0-SNAPSHOT
package: com.jmy
 Y: : y
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: E:\mvn_test
[INFO] Parameter: package, Value: com.jmy
[INFO] Parameter: groupId, Value: com.jmy
[INFO] Parameter: artifactId, Value: mavendemo02
[INFO] Parameter: packageName, Value: com.jmy
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: E:\mvn_test\mavendemo02
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  03:00 min
[INFO] Finished at: 2019-10-18T19:18:31+08:00
[INFO] ------------------------------------------------------------------------

编译 mvn compile 会自动导入pom.xml中的依赖,并将编译之后的字节码文件放入target/classes目录下

代码语言:javascript
复制
E:\mvn_test\mavendemo02>mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.jmy:mavendemo02 >-------------------------
[INFO] Building mavendemo02 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mavendemo02 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\mvn_test\mavendemo02\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mavendemo02 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling  source file to E:\mvn_test\mavendemo02\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.282 s
[INFO] Finished at: --18T19::+08:
[INFO] ------------------------------------------------------------------------

测试 mvn test 运行test目录下的测试代码

代码语言:javascript
复制
E:\mvn_test\mavendemo02>mvn test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.jmy:mavendemo02 >-------------------------
[INFO] Building mavendemo02 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mavendemo02 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\mvn_test\mavendemo02\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mavendemo02 ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mavendemo02 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\mvn_test\mavendemo02\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mavendemo02 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling  source file to E:\mvn_test\mavendemo02\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mavendemo02 ---
[INFO] Surefire report directory: E:\mvn_test\mavendemo02\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.jmy.AppTest
Tests run: , Failures: , Errors: , Skipped: , Time elapsed:  sec

Results :

Tests run: , Failures: , Errors: , Skipped: 

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.944 s
[INFO] Finished at: --18T19::+08:
[INFO] ------------------------------------------------------------------------

清理 mvn clean 将target目录清理干净

代码语言:javascript
复制
E:\mvn_test\mavendemo02>mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.jmy:mavendemo02 >-------------------------
[INFO] Building mavendemo02 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ mavendemo02 ---
[INFO] Deleting E:\mvn_test\mavendemo02\target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.359 s
[INFO] Finished at: --18T19::+08:
[INFO] ------------------------------------------------------------------------

打包 mvn package 将编译 测试在运行一遍生成当前项目的jar/war包

代码语言:javascript
复制
E:\mvn_test\mavendemo02>mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.jmy:mavendemo02 >-------------------------
[INFO] Building mavendemo02 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mavendemo02 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\mvn_test\mavendemo02\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mavendemo02 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling  source file to E:\mvn_test\mavendemo02\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mavendemo02 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\mvn_test\mavendemo02\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mavendemo02 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling  source file to E:\mvn_test\mavendemo02\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mavendemo02 ---
[INFO] Surefire report directory: E:\mvn_test\mavendemo02\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.jmy.AppTest
Tests run: , Failures: , Errors: , Skipped: , Time elapsed: 0.016 sec

Results :

Tests run: , Failures: , Errors: , Skipped: 

[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ mavendemo02 ---
[INFO] Building jar: E:\mvn_test\mavendemo02\target\mavendemo02-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.476 s
[INFO] Finished at: --18T19::+08:
[INFO] ------------------------------------------------------------------------

安装 mvn install 将当前项目的jar包放入本地库中

代码语言:javascript
复制
E:\mvn_test\mavendemo02>mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.jmy:mavendemo02 >-------------------------
[INFO] Building mavendemo02 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mavendemo02 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\mvn_test\mavendemo02\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mavendemo02 ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mavendemo02 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\mvn_test\mavendemo02\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mavendemo02 ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mavendemo02 ---
[INFO] Surefire report directory: E:\mvn_test\mavendemo02\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.jmy.AppTest
Tests run: , Failures: , Errors: , Skipped: , Time elapsed: 0.015 sec

Results :

Tests run: , Failures: , Errors: , Skipped: 

[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ mavendemo02 ---
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ mavendemo02 ---
[INFO] Installing E:\mvn_test\mavendemo02\target\mavendemo02-1.0-SNAPSHOT.jar to D:\mvn_repo\com\jmy\mavendemo02\1.0-SNAPSHOT\mavendemo02-1.0-SNAPSHOT.jar
[INFO] Installing E:\mvn_test\mavendemo02\pom.xml to D:\mvn_repo\com\jmy\mavendemo02\1.0-SNAPSHOT\mavendemo02-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.566 s
[INFO] Finished at: --18T19::+08:
[INFO] ------------------------------------------------------------------------

发布 mvn deploy 将将当前项目的jar包放入私服中

代码语言:javascript
复制
没有私服,就不再测试。

pom.xml详解

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
   
    <!--当前项目的maven资源左坐标-->
    <groupId>com.jmy</groupId>
    <artifactId>maven_01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--mvn package 打成什么样的包jar/war-->
    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin><!--插件 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>6</source>
                    <target>6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <!--需要导入的依赖-->
    <dependencies>
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-06T,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档