Maven项目管理

基础

概念

概念
Maven 是一个项目管理工具,可以对 Java 项目进行自动化的构建和依赖管理。

Maven是java项目管理工具,用于管理java依赖,用于编译、打包以及发布java项目。
它包含:项目对象模型(POM,Project Object Model)、项目生命周期(Project Lifecycle)、依赖管理系统(Dependency Management System)和各种插件。插件主要用来实现生命周期各个阶段(phase)的目标(goal)。
对Maven需要掌握:使用Maven构建项目、排查并调解项目依赖冲突。

作用

编译代码
项目打包
实现项目模块化
在线管理依赖,项目依赖很方便获取
提供了一些丰富的插件,方便项目持续集成

在这里插入图片描述

常见命令

命令说明
mvn install打包好的jar包会安装到本地的maven仓库
mvn archetype:generate创建工程架构的模板
可以用来创建maven项目
mvn test运行测试
mvn package打包
mvn complie用于编译源代码

IDEA配置Maven

概述
IDEA 默认的插件Maven 版本是3.6.1 自己使用的IDEA 版本是19.3.3
在这里插入图片描述
在这里插入图片描述

maven项目打包以及发布

在这里插入图片描述
学习参考:https://blog.csdn.net/qq_40547893/article/details/110091275

clean命令
	清除由项目编译创建的target
validate命令
	验证项目是否正确并且所有必要的信息均可用
compile命令
	编译项目的源代码
test命令
	使用合适的单元测试框架来测试编译的源代码。 这些测试不应要求将代码打包或部署
verify命令
	对集成测试的结果进行任何检查,以确保符合质量标准
package命令
	完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
install命令
	完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,
	但没有布署到远程maven私服仓库
deploy命令
	完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
**package,install,deploy三者关联**
mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。
site命令
	用于为Maven项目生成站点(用以生成HTML页面的模块等文档)

pom.xml

scope标签

<scope>xxx<scope>

xxx的内容有5种类型;
compile(编译范围):
	默认配置,表示被依赖项目需要参与当前项目的编译;
test(测试范围):
	表示依赖项目仅仅参与测试相关的工作;
runntime(运行时范围):
	表示被依赖项目无需参与项目的编译,后期的测试和运行周期需要参与;
provided(已提供范围):
	表示打包的时候可以不用包进去,别的实施(Web Container)会提供;
system(系统范围):
	与provided类似,但必须显式提供一个基于本地系统中JAR文件的路径,目的是为了允许基于本地对象编译;

Gradle

定义:
	Gradle 提供了强大的依赖管理、灵活的构建配置和高效的构建过程,使项目构建变得更加简单、可维护和可扩展。

实战

普通java项目变成maven项目

参考博客:https://www.cnblogs.com/liuyitan/p/13214886.html
在这里插入图片描述
pom.xml文件:

<?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>
    <groupId>com.isoftstone.core</groupId>
    <artifactId>isc</artifactId>
    <packaging>war</packaging>
    <version>1.0.0-SNAPSHOT</version>
    <name>xxxx</name>
    <dependencies>
        <dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.8.3</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.10.1</version>
        </dependency>
        <dependency>
            <groupId>com.vaadin.external.google</groupId>
            <artifactId>android-json</artifactId>
            <version>0.0.20131108.vaadin1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.21.1</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>com.cmbchina.ccd</groupId>
            <artifactId>general-crypto-toolkit-openSDK</artifactId>
            <version>1.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>cn.com.infosec</groupId>
            <artifactId>isec-func</artifactId>
            <version>jdk1.6-2.0.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.14.0</version>
        </dependency>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents.core5</groupId>
            <artifactId>httpcore5</artifactId>
            <version>5.2.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.16</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.0.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.15.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.14</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.10.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <dependency>
            <groupId>org.mozilla</groupId>
            <artifactId>rhino</artifactId>
            <version>1.7.14</version>
        </dependency>
        <dependency>
            <groupId>cn.com.infosec</groupId>
            <artifactId>isec-jce</artifactId>
            <version>jdk1.6-2.0.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.17.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents.client5</groupId>
            <artifactId>httpclient5</artifactId>
            <version>5.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.5</version> <!-- 替换为实际的POI版本号,如5.2.3 -->
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>5.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
        </dependency>


    </dependencies>
    <build>
        <finalName>isc</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>


问题解决

配置cat服务

问题描述:
	com.dianping.cat:cat-client:pom:unknown failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of maven-default-http-blocker has elapsed or updates are forced. Original error: Could not transfer artifact com.dianping.cat:cat-client:pom:unknown from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [ali (http://maven.aliyun.com/nexus/content/groups/public/, default, releases)]
无法访问 Maven 3.8.1 http 仓库。

解决:
	<dependency>
        <groupId>com.dianping.cat</groupId>
        <artifactId>cat-client</artifactId>
        <version>3.1.0</version>
    </dependency>
    // 给依赖项增加version即可,最初没有新增version

import包和真实包路径不同

描述:
	依赖包的位置是:\responsitory\cxx\uxx\Qx\qh_xxx\0.0.1-SNAPSHOT
	代码中引入的代码是:import com.uxxx.bxxx.log.Mxxx;
分析:
	由于 Maven 仓库的结构 或 项目配置 的问题导致的;
	// 后续新增;

maven实现deploy

在maven所在文件夹,conf--setting.xml--servers标签中
增加如下内容:
<server>
	<id>与maven配置文件pom中responsitry的id一致</id>
	<username>用户名</username>
	<password>密码</password>
</server>

如果出现修改后不起作用的情况;
需要修改c:/用户/xxx/.m2/setting.xml 文件中的servers标签,添加上述内容。

最后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值