2023-07-12实习笔记

459 阅读3分钟

1.maven clean install命令的作用

maven clean install 是一种常用的 Maven 命令,用来清理项目,编译源代码,运行测试,生成测试报告,并打包源代码成为可部署的格式,如 JAR 或 WAR。

以下是具体步骤:

  1. 打开命令行,转到项目的根目录。
  2. 输入 mvn clean install 命令并按回车键。

这将执行以下任务:

  • clean:删除 target 目录,清理之前的构建。
  • install:编译项目,运行测试,然后打包并安装到本地 Maven 仓库。

如果该过程中没有错误,您将在 target 目录下看到生成的 JAR 或 WAR 文件。

请注意,为了使用此命令,您需要确保已经正确设置了 Maven 的环境变量。

2.IDEA为什么将springboot使用maven打包最后只有几KB?

这可能是因为你的SpringBoot应用程序在打包时,只打包了自己的源代码,而没有将依赖的库一起打包。Maven有一个概念叫做scope,在pom.xml中的dependencies部分,每一个dependency都有一个scope元素,它定义了该依赖库在哪个阶段被使用,是否需要打包等。默认情况下,scope的值为compile,这意味着这个依赖库在编译、测试和运行阶段都需要,且会被打包。

但是,如果你使用了SpringBoot的starter POMs,它们的scope默认是provided,这意味着这些依赖库在编译和测试阶段是需要的,但在运行阶段不需要,也不会被打包,因为它假设这些库已经被提供在运行环境中。

如果你想在打包时将依赖的库一起打包,你需要使用spring-boot-maven-plugin插件的repackage目标,或者在你的pom.xml文件中显式地将这些依赖库的scope改为compile。

3.那么如何将其依赖的库一起打包?

要将Spring Boot项目的依赖库一起打包,你需要在项目的pom.xml文件中添加spring-boot-maven-plugin插件,并调用其repackage目标。以下是如何完成此操作的示例:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

然后,你可以通过运行mvn clean install命令来构建项目,生成的JAR或WAR文件将包括所有运行时需要的依赖项。这样,你的Spring Boot应用将是一个可执行的JAR或WAR文件,它包含了所有必要的依赖项,可以直接运行。

4.pom可以有两个父依赖吗?

不可以,一个POM(Project Object Model)只能有一个父POM。这是因为Maven使用继承的概念来处理依赖和插件。这样,一个项目可以继承其父项目的所有依赖和插件。如果POM可以有两个父POM,就会引入复杂性和可能的依赖冲突。然而,一个POM可以有多个子POM,这在多模块项目中很常见。

5.springboot如何手动创建带有重试机制的RabbitTemplate?

在Spring Boot中,你可以在创建RabbitTemplate对象时,设置一个RetryTemplate。RetryTemplate负责管理重试操作,包括定义重试的次数、间隔时间等。

以下是一个创建带有重试机制的RabbitTemplate的示例:

import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.retry.backoff.ExponentialBackOffPolicy;
import org.springframework.retry.support.RetryTemplate;

public RabbitTemplate createRabbitTemplateWithRetryMechanism() {
    // 创建CachingConnectionFactory对象
    CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
    connectionFactory.setAddresses("localhost");
    connectionFactory.setUsername("guest");
    connectionFactory.setPassword("guest");

    // 创建RetryTemplate对象
    RetryTemplate retryTemplate = new RetryTemplate();
    
    // 创建ExponentialBackOffPolicy对象,并设置相关参数
    ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy();
    backOffPolicy.setInitialInterval(500);
    backOffPolicy.setMultiplier(10.0);
    backOffPolicy.setMaxInterval(10000);
    retryTemplate.setBackOffPolicy(backOffPolicy);

    // 创建RabbitTemplate对象,并设置ConnectionFactory和RetryTemplate
    RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
    rabbitTemplate.setRetryTemplate(retryTemplate);

    return rabbitTemplate;
}

这个例子中,我们设置了一个ExponentialBackOffPolicy对象,这个对象定义了在每次重试之间的间隔时间。初始间隔是500毫秒,每次重试后,间隔时间将乘以10,但最大不会超过10000毫秒。

可以根据你的需要调整这些参数。