Jenkins не видит sqljdbc4

Всем привет!

Есть тест , который обращается к БД. Для этого использую sqljdbc4. Он собран в Maven. C консоли или eclipse этот тест запускается без проблем и нормально отрабатывает. В случае запуска с Jenkins выдает ошибку

Building in workspace C:\Program Files (x86)\Jenkins\workspace\Test
Parsing POMs
Найден новый модуль main:M_Main M_Main
Modules changed, recalculating dependency graph
[M_Main] $ “C:\Program Files\Java\jdk1.8.0_11/bin/java” -cp “C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven31-agent-1.5.jar;D:\Install\apache-maven-3.2.2-bin\apache-maven-3.2.2\boot\plexus-classworlds-2.5.1.jar;D:\Install\apache-maven-3.2.2-bin\apache-maven-3.2.2/conf/logging” jenkins.maven3.agent.Maven31Main D:\Install\apache-maven-3.2.2-bin\apache-maven-3.2.2 “C:\Program Files (x86)\Jenkins\war\WEB-INF\lib\remoting-2.43.jar” “C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven31-interceptor-1.5.jar” “C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-commons-1.5.jar” 49377
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven: -B -f C:\Users\Vladimir\workspace\M_Main\pom.xml install
[INFO] Scanning for projects…
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building M_Main 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for com.microsoft.sqlserver:sqljdbc4:jar:4.0 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.242 s
[INFO] Finished at: 2014-08-18T13:42:23+03:00
[INFO] Final Memory: 9M/119M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project M_Main: Could not resolve dependencies for project main:M_Main:jar:0.0.1-SNAPSHOT: Failure to find com.microsoft.sqlserver:sqljdbc4:jar:4.0 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced → [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[JENKINS] Archiving C:\Users\Vladimir\workspace\M_Main\pom.xml to main/M_Main/0.0.1-SNAPSHOT/M_Main-0.0.1-SNAPSHOT.pom
[ERROR] [Help 1] DependencyResolutionException - Apache Maven - Apache Software Foundation
channel stopped
Finished: FAILURE

Вот мой POM

<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>main</groupId>
  <artifactId>M_Main</artifactId>
  <version>0.0.1-SNAPSHOT</version>
    <dependencies>
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.11</version>
  		<scope>test</scope>
  	</dependency>
  	<dependency>
  		<groupId>org.seleniumhq.selenium</groupId>
  		<artifactId>selenium-java</artifactId>
  		<version>2.42.2</version>
  	</dependency>
  	<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency>
  </dependencies>
</project>

В чем может быть проблема?

В том Maven-репозитории, который используется на Jenkins, отсутствует нужная зависимость.

Нужно выяснить в чём отличие твоего локального репозитория, где всё работает, от того, который используется Jenkins-ом. Возможно ты (или кто-то другой) когда-то давно добавил эту зависимость вручную

Каким образом это возможно осуществить?

1 лайк

Судя по тому, что в pom.xml у тебя репозиторий не указан, используется тот, который дефолтный на системе. Ищешь где у тебя в системе Maven хранит свой репозиторий и обнаруживаешь, например, что локально у тебя есть пакет com/microsoft/sqlserver/sqljdbc4/4.0/, а на Jenkins такого нет

Далее можно посмотреть настройки Maven, локального и jenkins. Возможно для локального мавен настроен какой-то ещё репозиторий, из которого он тянет пакеты и sqljdbc4 пришёл оттуда. Если нет, значит он точно был добавлен тупо вручную

да. у меня есть такой пакет.
“а на Jenkins такого нет” уточните пожалуйста, где он должен быть

вот похожая проблема java - Failed build in Jenkins: cannot resolve sqljdbc4 jar - Stack Overflow в каком формате и в какое место settings.xml вставлять указанный в ответе путь?

а на машине где Jenkins работает осуществлял?

у меня дженкинс на localhost

Чё сразу не сказал? Тогда гугли откуда Jenkins берет настройки Maven-а

ничего толкового не нагуглил, был бы признателен за более детальный ответ

По твоей же ссылке написано решение. Укажи в файле настроек мавена settings.xml путь до репозитория в явном виде, в параметре localRepository

Либо попробуй этот путь указать в настройках Maven-плагина Jenkins’а (если там есть такая опция, я не в курсе)

P.S. settings.xml может находиться как в директории с .m2, так и в директории, где установлен мавен, в поддиректории conf

увы не помогло