我用Java(Eclipse)编写了Selenium测试。我使用JDBC SQLServerDriver连接到SQL Server并验证数据库中的一些结果;测试在Eclipse中完美运行:(Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver).newInstance();
)。
虽然我需要通过命令行执行它们,但我运行以下行:
mvn clean install -Dtest=Test1 test
只有在必须连接SQL Server以验证数据之前,才会执行测试。我收到错误消息:
java.sql.SQLException:没有为jdbc找到合适的驱动程序:sqlserver:// DBALIASSTAGING:1433 在java.sql.DriverManager.getConnection(DriverManager.java:689)
我指向Eclipse和我的JAVA_HOME
中的JDK 1.8。我在Eclipse和sqljdbc4.jar
(CLASSPATH
)中指出了C:\Microsoft JDBC Driver 4.0\sqljdbc_4.0\enu\sqljdbc4.jar
。
我还缺少什么?奇怪的是,Test1运行得非常好 - 仅在Eclipse中搜索数据库。但是当我运行mvn clean install -Dtest=Test1 test
时,无法通过命令行连接SQL Server。运行良好,但需要连接到SQL Server(11)时会发生阻塞。
我已阅读sqljdbc4.jar
上的所有帖子并正确设置CLASSPATH
变量,但我的配置中找不到任何错误。
请给我一个线索或暗示,我完全迷失了,我做错了什么?
答案 0 :(得分:1)
据我所知,微软尚未将该jar发布到任何maven存储库中,这非常棘手。
首先,你在eclipse类路径中拥有jar的事实对Maven来说没什么意义(它是独立的)。 Maven将要求您在项目的pom.xml中具有依赖项以便使用jar。 (与eclipse类路径类似)。
像这样:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
请注意,范围测试意味着jar仅在测试时可用于maven。
现在,通常从maven中央存储库下载依赖项。由于它不存在,您必须从microsoft下载并使用以下方法自行安装:
mvn install:install-file -Dfile = sqljdbc4.jar -DgroupId = com.microsoft.sqlserver -DartifactId = sqljdbc4 -Dversion = 4.0 -Dpackaging = jar
Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0
还请查看有关JTDS的其他答案。这个库(它在maven上公开可用)是我在多个生产运行软件中成功使用的库。
有关maven依赖关系的更多信息:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html