非maven项目快速转换为maven项目的方法步骤
背景
公司有个很旧的项目,无法通过提交gitlab
来实现自动构建docker
镜像(当然肯定可以通过其他的方式来构建镜像(这里可能没有研究所以不太清楚),但是我当时的想法就是把项目转换为maven
的,然后通过配置plugin
来实现)。
问题
因为旧的项目是spring
的项目可想而知是很多的jar
包,并且还有一些奇奇怪怪的jar
包(可能是第三方的,在中央库根本就找不到)。这是很头疼的,尝试去找了一个每个jar
的GAV
,因为太多了就放弃了。然后就想是否能直接通过配置方式来解决这个问题,快速把所有jar
引入到项目中,并且可以使他在maven
编译的时候也可以正常编译(虽然在idea
中可以运行是因为我们配置了libraries
所有才能正常运行)。
解决方式
方法只适用与jdk1.8及以下
,因为1.8
以上他取消了rt.jar
这个基础包。
<plugin> <!--使用maven-compiler-plugin来解决编译时无法找到第三方依赖的问题--> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> <!-- 指定源代码的字符编码为UTF-8。--> <encoding>UTF-8</encoding> <!-- 用于指定传递给Java编译器的参数。--> <compilerArgs> <!--一般不开调试的时候需要用到 这三个一般不开启 但是调试的时候可以通到--> <!--启用详细输出,显示编译过程的详细信息。--> <!--<arg>-verbose</arg>--> <!--启用unchecked警告,用于检测未经检查的操作。--> <!--<arg>-Xlint:unchecked</arg>--> <!--启用已过时元素使用警告,用于检测已经不推荐使用的API。--> <!--<arg>-Xlint:deprecation</arg>--> <!--bootclasspath 引导类路径。引导类路径是Java编译器在编译时使用的类路径,其中包含了Java标准库的核心类 其实可以不指定因为jdk11我测试的时候没找到rt.jar 所以说只支持jdk1.8及一下 这里如果这个的可以补充--> <arg>-bootclasspath</arg> <arg>${env.JAVA_HOME}/jre/lib/rt.jar</arg> <!--重点! extdirs 扩展目录允许你添加额外的类库目录,这里包括了Web应用程序的lib目录和Java运行时库的ext目录。 我们把自己的第三方jar包通过扩展类的形式让我们的编译器可以识别到。从而使得maven能够编译成功。 --> <arg>-extdirs</arg> <arg> ${project.basedir}/src/main/webapp/WEB-INF/lib${path.separator}${env.JAVA_HOME}/jre/lib/ext </arg> </compilerArgs> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> <configuration> <!--用于补充Web应用程序的资源文件。--> <webResources> <webResource> <!--用于在部署后可以让我们的tomcat识别到具有必要的第三方依赖--> <directory>${pom.basedir}/src/main/webapp/WEB-INF/lib/</directory> <!--将资源复制到指定目录--> <targetPath>WEB-INF/lib/</targetPath> <!--包含那些文件--> <includes> <include>**/*.jar</include> </includes> </webResource> </webResources> </configuration> </plugin>
总结
maven-compiler-plugin
:解决在编译过程中识别不到第三方依赖的问题
maven-war-plugin
:解决在部署后可以让第三方包被tomcat识别
使用这两个插件让我们可以无需一个一个的添加denpendency
,之后的有再补充的jar
包,可以通过denpendency
交给maven
来管理。
注意
在idea
工具中你可能还需要将webapp/WEB-INF/lib/
添加到libraries
中,因为idea
默认不是使用maven
来编译程序的。
到此这篇关于非maven项目快速转换为maven项目的方法步骤的文章就介绍到这了,更多相关非maven转为maven项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot重启后,第一次请求接口请求慢的问题及解决
这篇文章主要介绍了SpringBoot重启后,第一次请求接口请求慢的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-05-05基于springboot bean的实例化过程和属性注入过程
这篇文章主要介绍了基于springboot bean的实例化过程和属性注入过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11Spring中@Configuration注解和@Component注解的区别详解
这篇文章主要介绍了Spring中@Configuration注解和@Component注解的区别详解,@Configuration 和 @Component 到底有何区别呢?我先通过如下一个案例,在不分析源码的情况下,小伙伴们先来直观感受一下这两个之间的区别,需要的朋友可以参考下2023-09-09
最新评论