Maven和mysql依赖关系



我目前有一个项目,其中有一个build.xml。在这个构建中,有一个命令CreateDB,它调用something.jar。这个jar运行一些sql脚本(mysql-db)。所以,现在,我可以通过执行来运行该命令

ant CreateDB

从命令行。但现在,我需要做更多的事情。当我构建应用程序(使用Maven)时,我想运行ant命令。所以,我创建了这个pom.xml(见下文),但它不起作用,我得到了这个错误:

org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'org.gjt.mm.mysql.Driver'

根据这条消息,我似乎没有mySql的连接器,但我在依赖项中指定了它。那么,我做错了什么?

Pom.xml:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
         xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.dl.test</groupId>
  <artifactId>toto</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>toto</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.23</version>
        <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
            <id>mysql</id>
            <phase>integration-test</phase>
            <configuration>
              <tasks>
                <!-- For MySql -->
                <ant antfile="pathbuild.xml" target="createDB" />
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

maven-antrun插件启动的ant任务不会自动继承maven依赖项。

您必须在build.xml代码中显式引用maven测试类路径,该类路径可通过maven.test.classpath属性获得。

因此,您的执行可能类似于以下内容(test.classpath也需要在您的build.xml中引用):

<execution>
   <id>mysql</id>
   <phase>integration-test</phase>
   <configuration>
      <tasks>
         <!-- For MySql -->
         <property name="test_classpath" refid="maven.test.classpath"/>
         <ant antfile="pathbuild.xml" target="createDB" />
      </tasks>
   </configuration>
   <goals>
       <goal>run</goal>
   </goals>
</execution>

另请参阅:Maven AntRun插件-引用Maven Classpath

相关内容

  • 没有找到相关文章

最新更新