非maven项目快速转换为maven项目

非maven项目快速转换为maven项目

背景

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

问题

因为旧的项目是spring的项目可想而知是很多的jar包,并且还有一些奇奇怪怪的jar包(可能是第三方的,在中央库根本就找不到)。这是很头疼的,尝试去找了一个每个jarGAV,因为太多了就放弃了。然后就想是否能直接通过配置方式来解决这个问题,快速把所有jar引入到项目中,并且可以使他在maven编译的时候也可以正常编译(虽然在idea中可以运行是因为我们配置了libraries所有才能正常运行)。

解决方式

方法只适用与jdk1.8及以下,因为1.8以上他取消了rt.jar这个基础包。

<plugin>
    
    <groupId>org.apache.maven.pluginsgroupId>
    <artifactId>maven-compiler-pluginartifactId>
    <version>3.1version>
    <configuration>
        <source>1.8source>
        <target>1.8target>
        
        <encoding>UTF-8encoding>
        
        <compilerArgs>
            
            
            
            
            
            
            
            
            <arg>-bootclasspatharg>
            <arg>${env.JAVA_HOME}/jre/lib/rt.jararg>
            
            <arg>-extdirsarg>
            <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.pluginsgroupId>
    <artifactId>maven-war-pluginartifactId>
    <version>3.2.2version>
    <configuration>
       	
        <webResources>
            <webResource>
                
                <directory>${pom.basedir}/src/main/webapp/WEB-INF/lib/directory>
                
                <targetPath>WEB-INF/lib/targetPath>
              	
                <includes>
                    <include>**/*.jarinclude>
                includes>
            webResource>
        webResources>
    configuration>
plugin>

总结

maven-compiler-plugin:解决在编译过程中识别不到第三方依赖的问题

maven-war-plugin:解决在部署后可以让第三方包被tomcat识别

使用这两个插件让我们可以无需一个一个的添加denpendency,之后的有再补充的jar包,可以通过denpendency交给maven来管理。

注意

idea工具中你可能还需要将webapp/WEB-INF/lib/添加到libraries中,因为idea默认不是使用maven来编译程序的。

你可能感兴趣的:(Java,maven,java)