1

I`m getting an error in my Maven mysql project in netbeans when I try and clean build. The error is:

Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute (default) on project utopiaDatabase: Driver class not found: com.mysql.jdbc.Driver

I looked around and figured this is probably because my project isn`t finding my mysql-connector-java, but I have it added as a dependency and everything in my POM file looks fine, do you know why it might not be finding it?

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>com.eeu46f</groupId>
<artifactId>utopiaDatabase</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<profiles>
    <profile>
        <id>hsql</id>
        <dependencies>
            <dependency>
                <groupId>org.hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
                <version>2.3.2</version>
                <classifier>jdk6debug</classifier>
            </dependency>
        </dependencies>
        <properties>
            <jdbc.url>jdbc:hsqldb:mem:testDB</jdbc.url>
            <jdbc.username>SA</jdbc.username>
            <jdbc.password></jdbc.password>
            <jdbc.driver>org.hsqldb.jdbc.JDBCDriver</jdbc.driver>
        </properties>
    </profile>
    <profile>
        <id>mysql</id>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.6</version>
                <scope>runtime</scope>
            </dependency>
        </dependencies>
        <properties>
            <jdbc.url>jdbc:mysql:taken out for security</jdbc.url>
            <jdbc.username>taken out for security</jdbc.username>
            <jdbc.password>taken out for security</jdbc.password>
            <jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
        </properties>
    </profile>
</profiles>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.1</version>
    </dependency>
    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>2.3.2</version>
        <classifier>jdk6debug</classifier>
    </dependency>
    <dependency>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>sql-maven-plugin</artifactId>
        <version>1.5</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
</dependencies>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
</properties>
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sql-maven-plugin</artifactId>
            <version>1.5</version>
            <configuration>
                <driver>${jdbc.driver}</driver>
                <url>${jdbc.url}</url>
                <username>${jdbc.username}</username>
                <password>${jdbc.password}</password>
            </configuration>
            <executions>
                <execution>
                    <phase>generate-test-resources</phase>
                    <goals>
                        <goal>execute</goal>
                    </goals>
                    <configuration>
                        <srcFiles>
                            <srcFile>src/test/resources/1-destroy.sql</srcFile>
                            <srcFile>src/test/resources/2-create.sql</srcFile>
                            <srcFile>src/test/resources/3-insert.sql</srcFile>
                        </srcFiles>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

<name>utopiaDatabase</name>

database properties file in src/main/resources:

jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
jdbc.driver=${jdbc.driver}

I have tried adding mysql-connector-java-5.1.6 as a dependency in my maven project manually also. Thanks in advance

Defa1t
  • 141
  • 2
  • 10
  • Do you activate the mysql profile? –  Feb 25 '16 at 18:11
  • yes the mysql profile is activated, its worth noting I have the same problem with the hsql profile active – Defa1t Feb 25 '16 at 18:12
  • [ClassNotFoundException com.mysql.jdbc.Driver](http://stackoverflow.com/q/1585811) ? – Tom Feb 25 '16 at 18:14
  • No sorry I should have been more clear, I get `Driver class not found: org.hsqldb.jdbc.JDBCDriver` when using the hsql profile – Defa1t Feb 25 '16 at 18:18

1 Answers1

2

If you look at the homepage of the sql-maven-plugin under "Usage" it clearly shows that you have to give your driver as a dependency to the sql-maven-plugin. You only gave it as a dependency of your project.

If your project needs that dependency as well or not is a different story.

mediahype
  • 480
  • 2
  • 8