美文网首页springboot
maven打jar包供其他项目使用(记一次logback引发的线

maven打jar包供其他项目使用(记一次logback引发的线

作者: 小胖学编程 | 来源:发表于2020-12-06 21:59 被阅读0次

在微服务项目中,公共代码需要打成一个jar包,供其他项目maven引入。

1. 打包方式

例如:创建一个mybatis插件的jar。

maven文件的配置:

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yyy.xxx</groupId>
    <artifactId>xxx-mybatis-plugins</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--编译的编码以及JDK版本-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <!--mybatis依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <!--工具类依赖-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.0</version>
        </dependency>
        <!--日志依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.0</version>
        </dependency>
       <!--JSON工具依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.71</version>
        </dependency>
        <!--日志依赖-->
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <!--End LogBack Log-->

    </dependencies>

    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Releases</name>
            <url>http://私服地址</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Snapshot</name>
            <url>http://私服地址</url>
        </snapshotRepository>
    </distributionManagement>
    <!---使得jar包中存在源码的插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

点击按钮打包:

image.png
  1. 新建项目的编码问题
  1. maven的pom文件中使用< properties>定义JDK版本。

  2. 设置idea的配置

设置1.png
  1. 设置idea配置
设置2.png

设置为对应的JDK版本。

  1. 其他项目引用:
        <dependency>
            <groupId>com.yyy.xxx</groupId>
            <artifactId>xxx-mybatis-plugins</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

注意:引入该jar包的项目,也将会引入该jar包maven配置的依赖。

2. 注意事项

2.1 生产项目不打印日志

操作:

  1. 在jar的pom引入了ch.qos.logback依赖「具体的日志依赖」
  2. resource目录下配置了logback-test.xml文件。

然后某个项目使用了jar的项目上线后,项目运行时没有输出日志。

原因:

  1. (根本原因)就是不能在jar中引入具体的日志实现,只要引入org.slf4j抽象包即可,具体日志实现可以使用引入jar包的项目。

jar包中只是引入这个实现类就可以。

        <!-- 引入日志类-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
  1. (直接原因)在JAVA项目加载logback的配置文件时,先去classpath路径下寻找logback-test.xml名的配置文件。所以jar包中配置的logback-test.xml优先级高于项目中配置的logback.xml。会走jar包的配置。【若是jar和项目配置的名字相同,那么会优先走项目的配置文件!】「但是及其不推荐在jar包中引入具体的日志实现类」

SpringBoot2.x整合logback日志框架(1)

相关文章

网友评论

    本文标题:maven打jar包供其他项目使用(记一次logback引发的线

    本文链接:https://www.haomeiwen.com/subject/eoeawktx.html