在微服务项目中,公共代码需要打成一个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
- 新建项目的编码问题
-
maven的pom文件中使用< properties>定义JDK版本。
-
设置idea的配置
- 设置idea配置
设置为对应的JDK版本。
- 其他项目引用:
<dependency>
<groupId>com.yyy.xxx</groupId>
<artifactId>xxx-mybatis-plugins</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
注意:引入该jar包的项目,也将会引入该jar包maven配置的依赖。
2. 注意事项
2.1 生产项目不打印日志
操作:
- 在jar的pom引入了
ch.qos.logback
依赖「具体的日志依赖」 - 在
resource
目录下配置了logback-test.xml
文件。
然后某个项目使用了jar的项目上线后,项目运行时没有输出日志。
原因:
- (根本原因)就是不能在jar中引入具体的日志实现,只要引入
org.slf4j
抽象包即可,具体日志实现可以使用引入jar包的项目。
jar包中只是引入这个实现类就可以。
<!-- 引入日志类-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
- (直接原因)在JAVA项目加载logback的配置文件时,先去classpath路径下寻找
logback-test.xml
名的配置文件。所以jar包中配置的logback-test.xml
优先级高于项目中配置的logback.xml
。会走jar包的配置。【若是jar和项目配置的名字相同,那么会优先走项目的配置文件!】「但是及其不推荐在jar包中引入具体的日志实现类」。
网友评论