首页 > 编程语言 >类明显存在却报 package not found, Java程序中专门被其他工程所依赖的common jar用spring-boot-maven-plugin打包的注意事项

类明显存在却报 package not found, Java程序中专门被其他工程所依赖的common jar用spring-boot-maven-plugin打包的注意事项

时间:2024-07-20 18:28:55浏览次数:16  
标签:JAR Java package spring boot jar maven plugin

先上官方链接:
https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/maven-plugin/examples/repackage-classifier.html


在使用 Spring Boot 构建通用 JAR 库时,尤其是当通spring boot 默认的过 spring-boot-maven-plugin 插件打包时。如果遇到了类存在但报“package not found”的问题,
可以尝试以下 2 种方式解决。

方式1. spring-boot-maven-plugin 配置

spring-boot-maven-plugin 插件默认用于创建可执行的 JAR 包,这些 JAR 包包含了应用程序的所有依赖。这对于构建一个通用库来说可能并不合适,因为通用库应该是一个标准的 JAR 包,而不是一个可执行的 JAR 包。

示例 pom.xml 配置:

<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.example</groupId>
    <artifactId>common-library</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <dependencies>
        <!-- Spring Boot 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- 其他依赖 -->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 禁用可执行 JAR 包的创建 -->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <classifier>exec</classifier>
                            <skip>true</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

在这个配置中,通过 skip 属性禁用了可执行 JAR 包的创建,这样会生成一个标准的 JAR 包。

方式2. 使用标准 JAR 打包 ()

如果不需要 Spring Boot 特有的功能,可以直接使用 Maven 的 maven-jar-plugin 来创建 JAR 包,而不是使用 spring-boot-maven-plugin

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

以上

标签:JAR,Java,package,spring,boot,jar,maven,plugin
From: https://www.cnblogs.com/gongchengship/p/18313559

相关文章

  • Java基础语法01-运算符&流程控制语句If
    Java基础语法1.运算符1.1算术运算符(理解)1.1.1运算符和表达式运算符:对常量或者变量进行操作的符号表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。​不同运算符连接的表达式体现的是不同类型的表达式。举例说明:inta=10;intb=2......
  • Java基础语法02——While循环和Switch
    4.switch语句4.1switch语句结构(掌握)格式switch(表达式){ case1: 语句体1; break; case2: 语句体2; break; ... default: 语句体n+1; break;}执行流程:首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中......
  • JAVA 基础数据类型
    一、数据类型Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(WrapperClass),有些地方也翻译为外......
  • JavaScript - jSignature移动端手写签名
    <html><head><scriptsrc="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><scriptsrc="https://cdn.bootcdn.net/ajax/libs/jSignature/2.1.3/jSignature.min.js"></script>......
  • javascript条件判断语句。
    if语句条件满足就执行,不满足就不执行if(条件){语句}ifelse语句条件满足,执行语句1,条件不满足,执行语句2if(条件){语句1}else{语句2}ifelseifelseif… if(条件1){ 语句1 }else{ 语句2 }if(条件2){ 语句2 }el......
  • java的一些基础知识
    文章目录JDK、JRE、JVM变量关键字标识符规则数据类型基本数据类型(简单数据类型)引用数据类型(除基本数据类型以外的数据类型)运算符Java流程控制语句分支语句循环语句特殊的流程控制语句方法形参实参数组数组动态初始化和静态初始化数组的复制数组的扩容数组的删除二维......
  • Java----抽象类与接口
    知识框架: 一.抽象类1.1抽象类的概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。如下图所示:说明: Animal类是动物类,每个动物都有叫的......
  • JAVA 数据结构 - 数组
    一、固定数组Arrays数组用来存储固定大小的同类型的元素;1、声明,初始化,访问int[]myIntArray;double[]myDoubleArr;String[]myStrArr;intsize=10;double[]myDoubleArr=newdouble[size];double[]myList={1.9,1.4,2.3,9.8};for(inti=0;i<myList.le......
  • Java Swing Loading转圈的进度提示框
    JavaSwingLoading转圈的进度提示框具体只需要两个类AnimatedPanel.javaInfiniteProgressPanel.java 前因:我们开发的web应用,有个奇葩的需求,需要客户触发到客户端与第三方交互的地方加个Loading效果,已经脱离了web程序页面交互范围了,只是通过socket进行通信交互......
  • Java中的枚举详解
    文章目录概述使用枚举枚举的实现枚举的性能枚举与常量枚举集合类枚举与泛型枚举与反射概述枚举在Java中是一种特殊的类,用来定义一组固定的常量。它在Java5中引入,提供了一种类型安全的方式来定义和使用常量集合。尽管enum看起来像是新的数据类型,但它实际上是一个受限......