Maven 项目管理工具

发布于 2023-12-21 19:03:54 字数 32685 浏览 56 评论 0

1 Maven 的简介

1.1 什么是 maven

是 apache 下的一个开源项目,是纯 java 开发,并且只是用来管理 java 项目的

1.2 Maven 好处

普通的传统项目

Maven 项目

分析:maven 项目为什么这么小?没有 jar。 需要 jar 吗?肯定需要。没有存在于 maven 项目里面,jar 存在于哪?

1.3 依赖管理

1.4 项目一键构建

编码 编译 测试(junit)运行 打包 部署

一个 tomcat:run ​ 就能把项目运行起来

Maven 能干的事:编译 测试(junit)运行 打包 部署

1.5 小结

Maven 的好处:

1.5.1 依赖管理

就是对 jar 包的统一管理 可以节省空间

1.5.2 一键构建

1.5.3 可以跨平台

1.5.4 应用于大型项目 可以提高开发效率

分析:

用户管理 订单管理 支付管理 。

Maven 的分模块开发

互联网项目 按业务分

传统项目 按层分 entity dao service web

2 Maven 的安装配置

2.1 下载安装

从此目录中拷贝文件:

直接解压到一个没有中文没有空格的文件夹里解压后的目录如下:

Maven 软件的核心文件:

2.2 Maven 环境变量配置

1、 要配置 jdk, maven3.3.9 这个版本所需的 jdk 版本必须要 1.7 以上

2、 最终要运行的是 maven 软件中 bin 目录的 mvn 命令

所以要配置 maven 的环境变量,在系统变量添加环境变量的名称:MAVEN_HOME

变量值:就是 maven 软甲解压的目录 F:\class32\apache-maven-3.3.9

3、把 MAVEN_HOME 添加到 path 里

4、验证 maven 是否配置成功:

打开 dos 窗口 输入: mvn –v

2.3 Maven 仓库

三种仓库

1、本地仓库 自己维护

本地仓库的配置只需要修改 settings.xml 文件就可以

2、远程仓库(私服) 公司维护

3、中央仓库 maven 团队维护 两个亿

三种仓库的关系如下:

3 演示入门程序

3.1 Maven 的目录结构

3.2 Maven 的常用命令

Clean 清理编译的文件

Compile 编译了主目录的文件

Test 编译并运行了 test 目录的代码

Package 打包

Install 就是把项目发布到本地仓库

Tomcat:run 一键启动

3.3 Maven 的生命周期(了解)

Compile test package install deploy(发布到私服)

  • 三种生命周期
  • Clean 生命周期
  • Clean
  • Default 生命周期
  • Compile test package install deploy
  • Site 生命周期
  • Site

3.4 命令和生命周期的阶段的关系

不同的生命周期的命令可以同时执行

Mvn clean package

4 项目构建

M2e 插件的安装

Maven 在 eclipse 的配置

1、选择 3.3.9 版本的 maven 软件

2、修改默认的本地仓库地址

项目构建

1、 新建 maven 项目

2、调过骨架,如果不跳过骨架选择创建出的项目目录是不全的

2、 填写坐标

3、创建工程

4、处理红色叉号

手动在 webapp 文件夹下创建一个 WEB-INF 文件夹,在里面放一个 web.xml 文件

5、处理编译版本

在 pom.xml 中添加如下代码

<build>
<!-- 配置了很多插件 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>

5、创建一个 servlet

修改 web.xml

删除重复的代码

xmlns=http://java.sun.com/xml/ns/javaee

添加 jar 包

在 pom 中添加如下代码:

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>

会发现 jar 包已添加到项目中

启动项目

右击项目 run as –maven build ….

5 依赖管理

Jar 包的管理

需求:整合 struts2 页面上传一个客户 id 跳转页面

5.1 添加依赖:

打开 maven 仓库的视图:

5.2 重建索引

  1. 创建 maven 项目(同上)
  2. 跳过骨架(同上)
  3. 填写坐标信息(同上)
  4. 添加 web.xml 文件(同上)
  5. 修改编译版本(同上)
  6. 添加坐标 选择 Dependencies 标签 点击 add

7、 手动输入要添加的坐标,选择版本

8、 可以看到 pom.xml 文件中多出了如下代码

9、 同样的方式添加 servlet-api.jar 和 jsp-api.jar 注意选择 scope 为 provided

10、 写 action 代码

import com.opensymphony.xwork2.ActionSupport;
public class CutomerAction extends ActionSupport {
  private Long custId;
  public Long getCustId() {
    return custId;
  }
  public void setCustId(Long custId) {
    this.custId = custId;
  }
  public String findById(){
    return SUCCESS;
  }
}

11、 添加 struts.xml 文件放到 resources 目录中

内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 配置常量 -->
<!-- 字符集 -->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- 开发模式 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 通用 package -->
<package name="customer" namespace="/" extends="struts-default">
<action name="find" class="cn.itcast.action.CutomerAction"
method="findById">
<result name="success">/jsp/info.jsp</result>
</action>
</package>
</struts>

12、 添加 jsp 页面

15、修改 web.xml 文件 添加过滤器

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

5.3 依赖范围

5.3.1 Compile struts2-core

编译(compile)时需要 测试时需要,,运行时需要,打包时需要

5.3.2 Provided jsp-api.jar servlet-api.jar

编译(compile)时需要,测试(test)时也需要 ,运行时不需要,打包时不需要

5.3.3 Runtime 数据库驱动包

编译时不需要,测试时需要,,运行时需要,打包时需要

5.3.4 Test junit.jar

编译时不需要,测试时需要,运行时不需要,打包也不需要

添加插件

Maven add plugin

如果用 tomcat7 运行用命令:

Tomcat7:run

常见问题:

6 整合 ssh 框架

6.1 依赖传递

只添加了一个 struts2-core 依赖,发现项目中出现了很多 jar,

这种情况 叫 依赖传递

6.2 依赖版本冲突的解决

1、 第一声明优先原则

<dependencies>
<!-- spring-beans-4.2.4 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<!-- spring-beans-3.0.5 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.24</version>
</dependency>

2、 路径近者优先原则

自己添加 jar 包

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>

3、 排除原则

<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.24</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>

4、 版本锁定原则

<properties>
<spring.version>4.2.4.RELEASE</spring.version>
<hibernate.version>5.0.7.Final</hibernate.version>
<struts.version>2.3.24</struts.version>
</properties>
<!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

需求:

传客户 ID 页面上显示客户信息

准备数据库

6.3 构建项目

1、 创建数据库,

2、 执行准备好的 sql 脚本

Sql 脚本的位置:

3、 完善 pom.xml 文件,把 ssh 相关的依赖都添加上去

<!-- 属性 -->
<properties>
<spring.version>4.2.4.RELEASE</spring.version>
<hibernate.version>5.0.7.Final</hibernate.version>
<struts.version>2.3.24</struts.version>
</properties>
<!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 依赖管理 -->
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<!-- c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!-- 导入 struts2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
</dependency>
<!-- servlet jsp -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 设置编译版本为 1.7 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- maven 内置 的 tomcat6 插件 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<!-- 可以灵活配置工程路径 -->
<path>/ssh</path>
<!-- 可以灵活配置端口号 -->
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>

4、 完成实体类代码

5、 完成 dao 代码

接口

package cn.itcast.dao;
import cn.itcast.entity.Customer;
public interface CustomerDao {
  public Customer getById(Long id);
}

实现类

package com.itcast.dao.impl;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import cn.itcast.dao.CustomerDao;
import cn.itcast.entity.Customer;
public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao {
@Override
public Customer getById(Long id) {
return this.getHibernateTemplate().get(Customer.class, id);
}
}

6、 完成 service 代码

接口

package com.itcast.service;
import cn.itcast.entity.Customer;
public interface CustomerService {
public Customer getById(Long id);
}

实现类

package com.itcast.service.impl;
import com.itcast.service.CustomerService;
import cn.itcast.dao.CustomerDao;
import cn.itcast.entity.Customer;
public class CustomerServiceImpl implements CustomerService {
private CustomerDao customerDao;
public void setCustomerDao(CustomerDao customerDao) {
this.customerDao = customerDao;
}
@Override
public Customer getById(Long id) {
return customerDao.getById(id);
}
}

7、 完成 action 代码

package cn.itcast.action;
import com.itcast.service.CustomerService;
import com.opensymphony.xwork2.ActionSupport;
import cn.itcast.entity.Customer;
public class CutomerAction extends ActionSupport {
//两个成员变量
private Customer customer;
private Long custId;
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
private CustomerService customerService;
public void setCustomerService(CustomerService customerService) {
this.customerService = customerService;
}
public Long getCustId() {
return custId;
}
public void setCustId(Long custId) {
this.custId = custId;
}
public String findById(){
customer = customerService.getById(custId);
return SUCCESS;
}
}

8、 拷贝配置文件并修改

从如下图位置拿到配置文件

放入到 src/main/resources 目录中

修改内容 略

9、 修改 web.xml 添加 spring 的监听

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>

10、 运行项目

7 分模块开发

依赖范围对依赖传递造成的影响(了解)

父工程来管理 聚合

7.1 创建父工程:

1、选择 pom

2、创建出的父工程如下

3、在 pom.Xml 中添加以下信息:

<!-- 属性 -->
<properties>
<spring.version>4.2.4.RELEASE</spring.version>
<hibernate.version>5.0.7.Final</hibernate.version>
<struts.version>2.3.24</struts.version>
</properties>
<!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 依赖管理 -->
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<!-- c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!-- 导入 struts2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
</dependency>
<!-- servlet jsp -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 设置编译版本为 1.7 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- maven 内置 的 tomcat6 插件 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<!-- 可以灵活配置工程路径 -->
<path>/ssh</path>
<!-- 可以灵活配置端口号 -->
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>

4、发布到本地仓库

dao service web

7.2 创建 dao 子模块

1、在 ssh-parent 项目上右击 ,创建时选择 Maven Module

2、填写子模块名称 ssh-dao

3、把属于 dao 的代码拷贝到 该模块中:

4、完成后发布到本地仓库中

7.3 创建 service 子模块

1、创建方式如上:

2、把属于 service 的代码拷贝到该工程中

3、发布到本地仓库中

7.4 创建 Action 子模块

1、选择 war 的打包方式

5、 拷贝属于 action 的代码和配置文件

6、 修改 web.xml 添加 spring 监听

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext-*.xml</param-value>
</context-param>

4、添加页面:

8 私服 nexus

安装 nexus

启动服务

启动失败的解决方法:

登录 nexus

用户名/密码 admin/admin123

仓库类型

Virtual 虚拟仓库

Proxy 代理仓库

Hosted 宿主仓库 本地仓库

Group 组

需求:

把 dao 放到私服上,然后 service 从私服上下载

需求 :将 ssh_dao 的这个工程打成 jar 包,并放入到私服上去.

8.1 上传 dao

第一步: 需要在客户端即部署 dao 工程的电脑上配置 maven 环境,并修改 settings.xml 文件,配置连接私服的用户和密码 。

此用户名和密码用于私服校验,因为私服需要知道上传都 的账号和密码 是否和私服中的账号和密码 一致。

<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>

第二步: 配置项目 pom.xml

配置私服仓库的地址,本公司的自己的 jar 包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为 release 则上传到私服的 release 仓库,如果版本为 snapshot 则上传到私服的 snapshot 仓库。

<distributionManagement >
<repository>
<id>releases</id>
<url> http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url> http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>

注意:pom.xml 这里<id> 和 settings.xml 配置 <id> 对应!

第三步:执行 deploy 命令发布到私服

8.2 下载 dao

第一步 修改 settings.xml

<profile>
<!--profile 的 id-->
<id>dev</id>
<repositories>
<repository>
<!--仓库 id,repositories 可以配置多个仓库,保证 id 不重复-->
<id>nexus</id>
<!--仓库地址,即 nexus 仓库组的地址-->
<url> http://localhost:8081/nexus/content/groups/public/</url>
<!--是否下载 releases 构件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载 snapshots 构件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库,maven 的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository>
<!-- 插件仓库的 id 不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url> http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>

第二步 删除本地仓库中的 dao

第三步 update service 工程,出现以下信息说明已经成功

9 Maven 项目常见问题

1. 在 Maven 项目使用 Dubbo 和 Zookeeper 搭建分布式架构时,debug 显示找不到源码

问题详述:使用 Dubbo 将 web 项目和 Service 项目分离,通过 Dubbo 架构进行通信,那么如果我们在 Service 层打断点,然后通过浏览器访问 Web 层,Service 层的断点有反应,但会显示找不到源码

解决方案:将与 Service 子项目相关的项目全部添加到源码当中。

2. 在使用 Dubbo 分布式架构时,Debug 会抛超时异常。

这是因为 dubbo 默认连接时间为 1000ms,超过 1000ms 就会抛出超时异常,如果超时 Dubbo 会默认尝试三次,如果都失败则不再进行。

解决方案:

但在 Debug 模式下 1S 中显然不够,我们需要将时间延迟,我们只需要在服务调用者的配置文件中加入 timaout 属性,指定超时时间即可。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文