Maven Plugins And SpringBoot Package (二)

一 Maven Pom 配置

1.Pom参数

Maven Pom 参数配置官网说明

在这里插入图片描述

2.常用配置

参数含义
modelVersionPom模板 版本信息(保证Pom可正常解析)
groupId唯一标识
artifactId唯一标识
version版本
packaging包类型
description描述信息
dependencyManagement依赖管理
name项目名称
repository远程仓库
pluginRepository插件仓库
build构建配置
outputDirectoryclass 输出位置
resource资源
plugin插件

更多详细的配置使用可直接参考官网的参数说明

3.扩展

1.产品标识

## 产品唯一标识
<groupId>org.sun.moon</groupId>
<artifactId>moon-rabbit</artifactId>
<version>1.0.0</version>
groupIdartifactIdversion
域名.公司名.项目名项目名-模块名版本

一般来说,groupId 格式:
在这里插入图片描述

2.父依赖

## 指定父依赖
<relativePath/>

在这里插入图片描述

二 Maven Jar 编译配置

1.maven-jar-plugin

1.工程

在这里插入图片描述

2.配置

依赖和包分离

<?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">

    <!--Pom 模板版本-->
    <modelVersion>4.0.0</modelVersion>

    <!--产品标识和版本-->
    <groupId>com.demo</groupId>
    <artifactId>moon</artifactId>
    <version>V1.0.0</version>

    <!--指定:编译和打包,版本即系统Jdk版本;源码编码格式-->
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <other.jar.path>lib</other.jar.path>
    </properties>

    <!--外部依赖-->
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.4</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.1-jre</version>
        </dependency>
    </dependencies>

    <build>
        <!--maven 官网:https://maven.apache.org/shared/maven-archiver/index.html-->
        <!--是否包含 pom.xml 和 pom.properties-->
        <finalName>my-demo</finalName>
        <outputDirectory>D:\out</outputDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <!-- Jar 包输出位置 -->
                    <outputDirectory>D:\out</outputDirectory>
                    <archive>
                        <!--是否包含 pom.xml 和 pom.properties-->
                        <addMavenDescriptor>false</addMavenDescriptor>
                        <!-- MANIFEST MF 清单文件信息配置-->
                        <manifest>
                            <!--主类名(全类名)、是否包含外部依赖、依赖的路径前缀-->
                            <mainClass>com.demo.moon.Rabbit</mainClass>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>${other.jar.path}/</classpathPrefix>
                        </manifest>

                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <execution>
                        <!--执行ID、阶段、目标、复制到的位置-->
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>D:\out\${other.jar.path}</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

在这里插入图片描述

3.编译

在这里插入图片描述

可以将Jar包扩展名改为ZIP并解压缩,查看下 MF 文件信息

在这里插入图片描述

4.运行

运行 Jar 包 (未使用到依赖包的功能)

在这里插入图片描述

运行 class 文件,注意点

错误: 找不到或无法加载主类 com.demo.moon.Rabbit

Java 命令执行 Class 文件 遵循以下原则
1.根据 Classpath 指定的位置来查找; Class 要包含当前目录,检查环境变量是否包含中括号内的信息 [.;]
2.以当前用户路径为基础,根据包路经去搜索 Class 文件,即在当前执行 Java 命令的目录,依次新建包路经并将Class文件放于最里层,才可以执行

在这里插入图片描述

根据上面原则,如果 Java 会从上层目录检索 Class 文件,则可以在 com 目录内执行
修改环境变量

在这里插入图片描述

执行

在这里插入图片描述

2.maven-assembly-plugin

1.配置

<?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">

    <!--Pom 模板版本-->
    <modelVersion>4.0.0</modelVersion>

    <!--产品标识和版本-->
    <groupId>com.demo</groupId>
    <artifactId>moon</artifactId>
    <version>V1.0.0</version>

    <!--指定:编译和打包,版本即系统Jdk版本;源码编码格式-->
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <other.jar.path>lib</other.jar.path>
    </properties>

    <!--外部依赖-->
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.4</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.1-jre</version>
        </dependency>
    </dependencies>

    <!--配置阿里云插件仓库-->
    <pluginRepositories>
        <pluginRepository>
            <id>aliyun-plugin</id>
            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>


    <build>
        <!--maven 官网:https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html-->
        <!--是否包含 pom.xml 和 pom.properties-->
        <finalName>my-demo</finalName>
        <outputDirectory>D:\out</outputDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.4.2</version>
                <configuration>
                    <outputDirectory>D:\out</outputDirectory>
                    <archive>
                        <manifest>
                            <mainClass>com.demo.moon.Rabbit</mainClass>
                        </manifest>
                    </archive>
                    <!--assembly 默认的一种压缩方式-->
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <!--去除 jar-with-dependencies 后缀-->
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
                <executions>
                    <execution>
                        <!--合并继承、阶段、目标-->
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

2.编译

在这里插入图片描述

3.执行

在这里插入图片描述

4.包结构

在这里插入图片描述
清单文件

在这里插入图片描述

三 Maven SpringBoot 编译配置

1.修改项目结构

项目结构

在这里插入图片描述

启动类

package com.demo.moon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author
 * @date 2022-09-29 15:38
 * @since 1.8
 */
@SpringBootApplication
public class MoonApplication {

    public static void main(String[] args) {
        SpringApplication.run(MoonApplication.class,args);
    }
}

初始化

package com.demo.moon.config;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;

import java.time.LocalDateTime;

/**
 * @author
 * @date 2022-09-30 0:49
 * @since 1.8
 */
@Component
public class Init implements ApplicationRunner {

    /**
     * 启动执行
     * @param args
     * @throws Exception
     */
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("Current Date Time is : " + LocalDateTime.now());
    }
}

2.配置

<?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">

    <!--Pom 模板版本-->
    <modelVersion>4.0.0</modelVersion>

    <!--产品标识和版本-->
    <groupId>com.demo</groupId>
    <artifactId>moon</artifactId>
    <version>V1.0.0</version>

    <!--指定:编译和打包,版本即系统Jdk版本;源码编码格式-->
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <other.jar.path>lib</other.jar.path>
    </properties>

    <!--外部依赖-->
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.4</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.1-jre</version>
        </dependency>
    </dependencies>

    <!--配置阿里云插件仓库-->
    <pluginRepositories>
        <pluginRepository>
            <id>aliyun-plugin</id>
            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>


    <build>
        <finalName>my-moon</finalName>
        <outputDirectory>D:\out</outputDirectory>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.7.3</version>
                <configuration>
                    <outputDirectory>D:\out</outputDirectory>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--smart doc 接口文档 插件-->
            <plugin>
                <groupId>com.github.shalousun</groupId>
                <artifactId>smart-doc-maven-plugin</artifactId>
                <version>2.5.2</version>
                <configuration>
                    <configFile>./src/main/resources/doc/smart-doc.json</configFile>
                    <projectName>moon-api</projectName>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

3.编译和运行

在这里插入图片描述

4.清单

目录结构
在这里插入图片描述
清单信息
在这里插入图片描述

5.依赖外置

<?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">

    <!--Pom 模板版本-->
    <modelVersion>4.0.0</modelVersion>

    <!--产品标识和版本-->
    <groupId>com.demo</groupId>
    <artifactId>moon</artifactId>
    <version>V1.0.0</version>

    <!--指定:编译和打包,版本即系统Jdk版本;源码编码格式-->
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <other.jar.path>lib</other.jar.path>
    </properties>

    <!--外部依赖-->
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.4</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.1-jre</version>
        </dependency>
    </dependencies>

    <!--配置阿里云插件仓库-->
    <pluginRepositories>
        <pluginRepository>
            <id>aliyun-plugin</id>
            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>


    <build>
        <finalName>my-moon</finalName>
        <outputDirectory>D:\out</outputDirectory>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.7.3</version>
                <configuration>
                    <outputDirectory>D:\out</outputDirectory>
                    <fork>true</fork>
                    <layout>ZIP</layout>
                    <includes>
                        <include>
                            <groupId>nothing</groupId>
                            <artifactId>nothing</artifactId>
                        </include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--拷贝依赖-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>D:\out\lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--smart doc 接口文档 插件-->
            <plugin>
                <groupId>com.github.shalousun</groupId>
                <artifactId>smart-doc-maven-plugin</artifactId>
                <version>2.5.2</version>
                <configuration>
                    <configFile>./src/main/resources/doc/smart-doc.json</configFile>
                    <projectName>moon-api</projectName>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

6.编译和运行

java -Dloader.path=lib/ -jar

在这里插入图片描述

7.清单

目录结构
在这里插入图片描述

清单信息
在这里插入图片描述

四 包配置和本地仓库存储位置关系

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪悟道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值