maven中常见问题

这篇具有很好参考价值的文章主要介绍了maven中常见问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、配置项提示

SpringBoot中提示错误信息

maven中常见问题,java基础,maven,spring boot,java

表示的是SpringBoot中的注释提示没有配置!那么可以来使用一下springboot官方的注解处理器来解决这个问题

可以直接点击链接进去

现在依赖中引入对应依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

然后在打包插件中排除掉打包进去的注释处理器

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

二、父子打包

打包须知

这种微服务项目或者说是maven父子级项目打包要解决的问题就是具体业务代码依赖工具类代码,利用idea的maven插件可以很方便做到。在上层文件夹管理模块中,添加 pom (没有业务代码只做包含其他包的父类空包)
没有main方法的工具模块中只添加 jar
在具体的业务代码模块中添加:

<build>
    <!--maven的打包插件-->
    <plugins>
        <!--忽略测试类-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
    <!--打包规则,打包时将resource文件夹打包进去-->
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.yml</include>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.yml</include>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

这样,只需在每个有mian方法的具体的业务模块中的pom中添加:

<plugins>
    <!--忽略测试类-->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <testFailureIgnore>true</testFailureIgnore>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
</plugins>

最终打包:只需对最顶层模块进行clean,install,在每个模块对应的target目录中找到jar包。

三、打包之后不显示target

maven中常见问题,java基础,maven,spring boot,java

然后就会有对应的显示了。

maven中常见问题,java基础,maven,spring boot,java

四、自定义打包之后的jar包名称

没有更改名称之前:stock-1.0-SNAPSHOT.jar

但是当前没有版本,也不是自己想要的名称,但是改名字的话比较简单,下面来进行说明一下

直接进入到pom文件中来,可以看到pom文件配置如下:

    <parent>
        <artifactId>tuling-mall-demo1-parent</artifactId>
        <groupId>com.guang</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>stock</artifactId>

那么我们可以自定义改名称:

    <parent>
        <artifactId>tuling-mall-demo1-parent</artifactId>
        <groupId>com.guang</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>stock</artifactId>
    <version>1.0.0</version>
    <name>stock</name>

只是添加了版本号和对应的服务名称,打包后的名称就如同上诉所示。

其实我觉得这里的name应该和微服务名称保持一致

然后再次来查对应的jar包,就可以看到名称已经发生修改了:stock-1.0.0.jar

五、整个项目打包

直接在父工程中来进行打包的时候,发现出现异常:

Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.3

原因分析:项目里面包含了某些工具类的模块,而工具类模块是不需要我们启动的,只是提供给其他微服务引用而已,不需要启动就意味着 没有main启动类,但是父工程的pom文件却引用了 springboot打包插件 spring-boot-maven-plugin,即:

    <!--springboot 打包插件-->
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>

所以在打包的时候mvn会扫描所有的依赖模块,如果发现某个模块下面没有main启动类,就会报错。

那么解决问题就比较容易了,不在父工程中添加打包插件,而是在有启动类的微服务中来进行添加打包插件。

5.1、父项目管理插件和微服务打包

所以最佳实践应该是,在父pom文件中添加插件管理,然后在具体的微服务中,引入插件

父pom.xml文件:

<build>
    <pluginManagement>
        <plugins>
            <!-- java编译插件 -->
            <!--maven打包插件,可打直接可运行的jar包或war包-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${boot.version}</version>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

具体的微服务:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${boot.version}</version>
        </plugin>
    </plugins>
</build>

在打包的时候也可以将spring-boot-configuration-processor给排除掉。文章来源地址https://www.toymoban.com/news/detail-638852.html

到了这里,关于maven中常见问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Maven编译常见问题收集

    这是因为父pom引入依赖的时候,把 使用dependencyManagement可以 统一 管理项目中依赖包的 版本号 ,当需要变更版本号时只需在父pom中修改即可;如果某个子项目需要指定一个特殊的版本号时,只需要在自己项目的pom.xml中显示声明一个版本号即可,此时子项目会使用自己声明的

    2024年02月09日
    浏览(38)
  • Spring Cloud常见问题处理和代码分析

    Spring Cloud常见问题处理 解决方案:使用 Spring Cloud 提供的 Eureka、Zookeeper、Cloud Foundry 和 Consul 等注册中心来实现服务注册和发现。 示例代码: 解决方案:使用 Spring Cloud 提供的 Config Server 和 Config Client 来实现分布式配置。 示例代码: 解决方案:使用 Spring Cloud 提供的 Spring

    2024年02月14日
    浏览(46)
  • IDEA Maven 项目中 “Could not find artifact“ 问题的常见情况和解决方案

    在IDEA(IntelliJ IDEA)中使用Maven构建项目时,有时会遇到“Could not find artifact”这样的错误。这个错误通常意味着Maven试图下载或查找某个依赖项,但是没有在配置的仓库中找到。这个问题可能会导致项目构建失败,因此需要了解常见的情况以及相应的解决方案。 IDEA Maven项目中

    2024年04月26日
    浏览(90)
  • 已解决 IDEA Maven 项目中 “Could not find artifact“ 问题的常见情况和解决方案

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月11日
    浏览(57)
  • JVM基础,面试常见问题

    目录 一.运行时数据区域 1.线程独享 (1)栈 (2)程序计数器 2.线程共享 (1)方法区 (2)堆 二.内存如何分配 1.指针碰撞法 2.空闲列表法 3.TLAB 三.对象在内存中的组成 1.对象头 (1)markword (2)指向类型的指针 (3)如果是数组-》数组长度 2.实例数据 3.对齐填充 四.如何访

    2024年01月23日
    浏览(50)
  • Flask基础及常见问题整理

    使用python开发后端,目前主流的框架就是Flask和Django。其中,Flask是一款轻量级的Python web框架,有以下主要特点: Flask很简单易用,可以快速上手开发web应用。它只依赖Werkzeug和Jinja2两个库,没有象Django那样的重量级复杂的功能。 Flask非常灵活,可以适用于不同的项目规模。从简

    2024年02月11日
    浏览(47)
  • 面试-java常见问题

    程序计数器:当前线程所执行的字节码的行号指示器 java虚拟机栈:临时变量 元空间:类常量池,运行时常量池 方法区:类信息,静态变量 堆:对象实例,Sting常量池等 加载-链接(验证+准备+解析)-初始化-使用-卸载 加载 :将硬盘中的二进制文件转为内存中的class对象 链接

    2024年02月08日
    浏览(52)
  • Java毕业答辩常见问题

    你已经完成了数年的学习和努力,终于迎来了毕业答辩的大日子。而对于Java专业的同学们来说,以下是一些可能会被问到的常见问题,当然,我的回答可能有些幽默,希望能为你带来些许轻松。 这是一个经典的问题,也是一个常被问到的问题。尽管Java和JavaScript这两个编程语

    2024年02月08日
    浏览(54)
  • JAVA开发中常见问题

    目录 1.深浅克隆问题 2.Mysql中可以代替左模糊或全查询的函数方法 3.开发时需注意,使用String类的equals()方法时,原则上需要左边的变量不能为null值,避免程序执行时出现空指针报错 4.Mysql Update的高效应用 5.Mysql Insert 的高效应用 6.在try-catch-finally代码块中return或者throw Exception时需

    2024年02月05日
    浏览(47)
  • 【技术驿站】分布式基础与常见面试问题

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月04日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包