解决一次java.util.zip.ZipException: Unexpected record signature: 0X9问题
  OZAzynJ30dwu 2023年12月11日 82 0


打包时候文件压缩导致文件不可用
部分pom.xml 手打版

<properties>
	<java.version>1.8</java.version>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
	<resources>
		<resource>
			<directory>src/main/resources</directory>
			<filtering>true</filtering>
			<includes>
				<include>**/*</include>
			</includes>
		</resource>
	</resources>

	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>3.10.0</version>
			<configuration>
				<source>${java.version}</source>
				<target>${java.version}</target>
				<encoding>${project.build.sourceEncoding}</encoding>
			</configuration>
		</plugin>

		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-resources-plugin</artifactId>
			<version>3.1.0</version>
			<configuration>
				<nonFilteredFileExtensions>
					<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
					<nonFilteredFileExtension>xls</nonFilteredFileExtension>
					<nonFilteredFileExtension>zip</nonFilteredFileExtension>
					<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
				</nonFilteredFileExtensions>
			</configuration>
		</plugin>
	</plugins>
</build>

同事在子项目里加的org.apache.maven.plugins配置覆盖了原来父工程pom中对org.apache.maven.plugins中nonFilteredFileExtension的定义

父子工程的依赖继承问题
子模块会继承父工程的依赖,但并不是所有继承下来的依赖都有效、还能在子模块中使用。作用域是provided、test的依赖,继承下来都是无效的,需要在子模块的pom.xml中重新导入

jar包锁定
公司往往要在父工程的pom.xml中统一项目的jar包版本,但如果在子模块的pom.xml中导入了同名、不同版本的jar包,会覆盖父工程传递的同名依赖。为防止这种问题,需要在父工程的pom.xml中锁定jar包版本。
就是把<dependencies>拷贝一下放到<dependencyManagement>中。锁定之后,如果子模块中出现同名的依赖,以父工程传递的依赖(锁定的依赖)为准。
需要注意的是<dependencyManagement>只有锁定jar包的功能,不会导入jar包。

maven 是个管理工具,如果我们不告诉它我们的代码要使用什么样的 jdk 版本编译的话,它就会用 maven-compiler-plugin 默认的 jdk 版本来进行处理,这样就容易出现版本不匹配,以至于可能导致编译不通过的问题。

maven-compiler-plugin插件是一个Maven插件,用来编译项目代码maven-compiler-plugin主要负责的是java代码的版本管理、编译、编码等方面的功能

maven-resources-plugin忽略对某些文件进行处理
maven打包项目的时maven-resources-plugin插件会对资源文件中占位符进行替换 但部分文件可能不需要进行替换,例如:证书文件,Excel文件等这些文件处理后将不能使用

作者:chenzan
链接:https://www.jianshu.com/p/d93c6c553f5f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考文档:
Maven 打包指定资源配置文件 及 防止打包时候文件压缩导致文件不可用

Maven 父子工程的一些细节

maven-compiler-plugin详解maven几种打包插件介绍,及个人心得总结

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月11日 0

暂无评论

推荐阅读
OZAzynJ30dwu