非maven项目快速转换为maven项目的方法步骤

 更新时间:2024年01月15日 15:29:28   作者:假女吖☌  
时候我们导入的项目并不是有maven来管理依赖的,而是要手动添加jar包,比较麻烦,本文主要介绍了非maven项目快速转换为maven项目的方法步骤,具有一定的参考价值,感兴趣的可以了解一下

背景

公司有个很旧的项目,无法通过提交gitlab来实现自动构建docker镜像(当然肯定可以通过其他的方式来构建镜像(这里可能没有研究所以不太清楚),但是我当时的想法就是把项目转换为maven的,然后通过配置plugin来实现)。

问题

因为旧的项目是spring的项目可想而知是很多的jar包,并且还有一些奇奇怪怪的jar包(可能是第三方的,在中央库根本就找不到)。这是很头疼的,尝试去找了一个每个jarGAV,因为太多了就放弃了。然后就想是否能直接通过配置方式来解决这个问题,快速把所有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重启后,第一次请求接口请求慢的问题及解决

    这篇文章主要介绍了SpringBoot重启后,第一次请求接口请求慢的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java中Date类和Calendar类的常用实例小结

    Java中Date类和Calendar类的常用实例小结

    这篇文章主要介绍了Java中Date类和Calendar类的常用实例小结,是Java入门学习中的基础知识的运用,需要的朋友可以参考下
    2015-08-08
  • java继承的概念及案例解析

    java继承的概念及案例解析

    这篇文章主要介绍了java继承的概念及案例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java 深入浅出掌握Map集合之双列集合

    Java 深入浅出掌握Map集合之双列集合

    双列集合是每个元素都有键与值两部分组成的集合,记录的是键值对对应关系,即通过键可以找到值,键必须是唯一,值可以重复,接下来跟着小编具体了解吧
    2021-11-11
  • Java实现邮件找回密码功能

    Java实现邮件找回密码功能

    这篇文章主要为大家详细介绍了Java实现邮件找回密码功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • SpringBoot主键ID传到前端后精度丢失的问题解决

    SpringBoot主键ID传到前端后精度丢失的问题解决

    这篇文章主要通过示例为大家详细介绍一些SpringBoot如何解决雪花算法主键ID传到前端后精度丢失问题,文中的示例代码讲解详细,需要的可以参考一下
    2022-05-05
  • java 中枚举类enum的values()方法的详解

    java 中枚举类enum的values()方法的详解

    这篇文章主要介绍了java 中枚举类enum的values()方法的详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • 基于springboot bean的实例化过程和属性注入过程

    基于springboot bean的实例化过程和属性注入过程

    这篇文章主要介绍了基于springboot bean的实例化过程和属性注入过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java中String类常用方法使用详解

    Java中String类常用方法使用详解

    String类是一个很常用的类,它位于java.lang包下,是Java语言的核心类,用来保存代码中的字符串常量的,并且封装了很多操作字符串的方法。本文就来聊聊String类常用方法使用,感兴趣的可以了解一下
    2022-08-08
  • Spring中@Configuration注解和@Component注解的区别详解

    Spring中@Configuration注解和@Component注解的区别详解

    这篇文章主要介绍了Spring中@Configuration注解和@Component注解的区别详解,@Configuration 和 @Component 到底有何区别呢?我先通过如下一个案例,在不分析源码的情况下,小伙伴们先来直观感受一下这两个之间的区别,需要的朋友可以参考下
    2023-09-09

最新评论