jdbc驱动mysql-connector-j的maven编译方法

文章介绍了如何通过Maven替代官方的ANT方法来编译MySQL的JDBC驱动源码。首先,下载必要的资源,包括源码和JDK。然后,在IDEA中创建新的Maven项目,替换源码并编辑pom.xml文件添加依赖。最后,配置并运行Maven的compile和package目标以编译和打包驱动,通过调整pom.xml中的依赖版本确保与源码兼容。跳过测试可以加速打包过程。
摘要由CSDN通过智能技术生成

一、问题

MySQL官网上面提供的驱动编译方法,是通过ant编译的,所有依赖包都要自行下载,虽然提供了下载地址,但是过程也有点麻烦。

通过maven的方式进行编译,更加简洁,明了。

二、解决方法

1、资源下载

 (1)MySQL官方提供的编译方法,比较古老

MySQL :: MySQL Connector/J 8.0 Developer Guide :: 4.3 Installing from Sourcehttps://dev.mysql.com/doc/connector-j/8.0/en/connector-j-installing-source.html(2)mysql-connect-j源码下载:

GitHub - mysql/mysql-connector-j: MySQL Connector/Jhttps://github.com/mysql/mysql-connector-j(3)jdk1.8下载

 jdk需要选择1.8,可以在oracle官网下载:Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#java8

打开网页是最新版java20,往下拉选择java 8,64位操作系统选择x64,32位操作系统选择x86

2、打开IDEA,新建项目

3、生成器选择maven,填写项目名称、位置、选择JDK、archetype,点击右下角创建

4、打开新建工程目录,用上面下载的mysql-connector-j源码中src目录下的所有文件,复制替换新建新建工程src目录下的所有文件

 

 5、替换完成后,删除其他文件,比如it

 6、打开工程下的pom.xml文件

7、编辑pom.xml文件 

 将pom.xml文件中的已有内容进行替换,具体如下

<?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>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.20</version>

  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.plugin-tools</groupId>
      <artifactId>maven-plugin-annotations</artifactId>
      <version>3.2</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>5.8.2</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <version>5.6.2</version>
    </dependency>

    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-runner</artifactId>
      <version>1.6.2</version>
    </dependency>

    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <version>3.22.0</version>
    </dependency>

    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.5</version>
    </dependency>

    <dependency>
      <groupId>org.javassist</groupId>
      <artifactId>javassist</artifactId>
      <version>3.28.0-GA</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.36</version>
    </dependency>

    <dependency>
      <groupId>com.oracle.oci.sdk</groupId>
      <artifactId>oci-java-sdk-common</artifactId>
      <version>2.27.0</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.2</version>
        <configuration>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <filesets>
            <fileset>
              <directory>${basedir}/jar</directory>
            </fileset>
          </filesets>
        </configuration>
      </plugin>
      <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>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.8</version>
        <executions>
          <execution>
            <id>add-build</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>src/build/java/</source>
                <source>src/demo/java/</source>
                <source>src/generated/java/</source>
                <source>src/legacy/java/</source>
                <source>src/main/core-api/java/</source>
                <source>src/main/core-impl/java/</source>
                <source>src/main/protocol-impl/java/</source>
                <source>src/main/user-api/java/</source>
                <source>src/main/user-impl/java/</source>
              </sources>
            </configuration>
          </execution>
          <execution>
            <id>add-test</id>
            <phase>generate-test-sources</phase>
            <goals>
              <goal>add-test-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>src/test/java/</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.21.0</version>
        <dependencies>
          <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.2.0-M1</version>
          </dependency>
          <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.6.2</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>

8、pom.xml文件编辑注意事项

(1)pom中依赖吧的版本可能和mysql-connector-j版本有关,上面pom.xml内容是2023.3.8日的,如果驱动代码更新,依赖包的版本可能需同步更新

 9、点击右边栏maven,点击重新加载所有依赖项目

 10、加载完成即可看到所有插件和依赖项

 11、双击compile,开始编译工程,结果如下

12、双击maven中的package进行打包 

由于工程默认会跑自带的ut测试用例,耗时较长

  13、在maven选项中点击跳过测试,可以不用跑测试用例,速度会快一些

14、跳过测试模式后,打包还是比较快的

15、查看编译打包结果

 打包完成后,工程目录下会多一个target文件夹,里面有打包结果jar文件

16、结果jar文件命名是在pom.xml文件中设定的

 17、打包完成后,或者每次重新打包前,需要清理target结果,点击maven中的clean即可

三、总结

本文记录了mysql-connector-j也就是mysql的jdbc驱动源码编译打包的方式,通过maven方式进行打包,更加方便,需要重点注意就是pom.xml文件中的依赖包名称和版本内容。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值