2014-10-22 2 views
4

Я пытаюсь подключиться к базе данных mysql в java, поэтому мне нужно добавить mysql-connector-java:jar в проект eclipse. Однако интеграция с maven не работает.Добавить соединитель mysql для сборки maven/nexus в eclipse

Вот что у меня в settings.xml:

<profile> 
<id>default</id> 
<properties> 
<mvn.path>.../maven-3.0.4/bin/mvn.bat</mvn.path> 
<javac.5>...bin/javac.exe</javac.5> 
<javac.6>..../javac.exe</javac.6> 
</properties> 
<repositories> 
<repository> 
    <id>central-repository</id> 
    <name>OSS central Maven Release Repository</name> 
    <url>https://oss.sonatype.org/content/repositories/releases</url> 
</repository> 
<repository> 
    <id>public-repository-main</id> 
    <name>Central Repository</name> 
    <url>https://repo1.maven.org/maven2</url> 
</repository> 
<repository> 
    <id>public-repository</id> 
    <name>OSS Maven Release Repository</name> 
    <url>https://oss.sonatype.org/content/groups/public</url> 
</repository> 
</repositories> 
</profile> 

<interactiveMode>true</interactiveMode> 
<!-- offline 
| Determines whether maven should attempt to connect to the network when executing 
| a build. 
| This will have an effect on artifact downloads, artifact deployment, and others. 
| 
| Default: false <offline>false</offline> --> 
<offline>false</offline> 
<mirror> 
    <id>nexus</id> 
    <mirrorOf>*</mirrorOf> 
    <url>http://xxxx:8083/nexus/content/groups/public</url> 
</mirror> 

А вот ошибка я получаю, когда я пытаюсь к mvn clean install

Failure to find mysql:mysql-connector-java:jar:5.0.5 in 
http://xxxx:8083/nexus/content/groups/public 

Как я могу заставить нексус, чтобы загрузить артефакт из моих публичных репозиториев в nexus? Должен ли я добавить его вручную?

+0

Не могли бы вы предоставить свой maven settings.xml? Я запустил зависимость с пустым pom.xml и значением по умолчанию settings.xml. Он работает нормально. Похоже, у вас проблема с конфигурацией репозиториев. –

+0

Я добавил другую информацию в свои settings.xml к вопросу. Я проверил центральный репозиторий и, кажется, там – Ayrad

+0

Я предположил, что ваш pom.xml указывает на ваш внутренний репозиторий нексусов. Вы можете добавить репозиторий прокси в свой внутренний репозиторий. См. Http://books.sonatype.com/nexus-book/reference/config-sect-new-repo.html. После добавления репозитория прокси-сервера, помните, добавьте группу репозитория внутреннего сообщества. Вы также можете обратиться к http://stackoverflow.com/questions/6860370/nexus-proxy-repository – hutingung

ответ

2

Вам нужно указать maven, чтобы использовать ваш репозиторий maven. Чтобы сделать это, измените $ HOME/.m2/settings.xml следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<settings 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/settings-1.0.0.xsd"> 
    <mirrors> 
    <mirror> 
     <id>nexus</id> 
     <mirrorOf>*</mirrorOf> 
     <url>http://xxxx:8083/nexus/content/groups/public</url> 
    </mirror> 
    </mirrors> 
    <proxies></proxies> 
    <servers></servers> 
    <pluginGroups></pluginGroups> 
    <profiles> 
    <profile> 
     <id>nexus</id> 
     <!--Enable snapshots for the built in central repo to direct --> 
     <!--all requests to nexus via the mirror --> 
     <repositories> 
     <repository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </repository> 
     </repositories> 
     <pluginRepositories> 
     <pluginRepository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </pluginRepository> 
     </pluginRepositories> 
    </profile> 
    </profiles> 
    <activeProfiles> 
    <activeProfile>nexus</activeProfile> 
    </activeProfiles> 
</settings> 

профиль нексус настроен для загрузки из центрального хранилища с a bogus URL из http://central.

Этот URL-адрес переопределяется настройкой зеркала в том же файле settings.xml, чтобы указать URL-адрес вашего single Nexus group. Затем группа nexus отображается как активный профиль в элементе activeProfiles.

Предположим, у вас есть центральное хранилище, которое имеет путь хранилища http://xxxx:8083/nexus/content/repositories/central, а также удаленной точки хранения Место для http://repo1.maven.org/maven2/ вы можете изменить http://central к http://xxxx:8083/nexus/content/repositories/central или http://repo1.maven.org/maven2/.

в вашем pom.xml, используйте ниже зависимости от получения mysql-коннектора.

<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>5.1.33</version> 
</dependency> 

Смотрите также: Getting started with Nexus maven repository manager

Надежда эта помощь.

+0

mmm изменил мои settings.xml соответственно, но я все равно получаю ту же ошибку. Должен ли я настраивать http://repo1.maven.org/maven2/ в консоли nexus, прежде чем это может работать? – Ayrad

+0

@Ayrad да, но насколько я знаю, добавьте его по умолчанию. Если он не появился в вашем публичном репозитории, вы должны добавить его самостоятельно, сделав его репозиторием прокси, а также добавьте его в группу публичного репо. – wittakarn

+0

В моей консоли nexus все сконфигурированные репозитории локальны (все пути указывают на локальный сервер: 8083/nexus/content ...), включая центральный репозиторий, который имеет статус «In Service - удаленный автоматический запираемый и недоступный» – Ayrad

-1

Вот доступные версии соединителя MySQL http://mvnrepository.com/artifact/mysql/mysql-connector-java, нажмите на любую версию, это даст вам зависимость.

+1

Спасибо, Ахмед. Означает ли это, что мне нужно вручную загрузить банку и добавить ее в ссылку?Я думал, что точкой репозиториев является автоматическая загрузка этих зависимостей. – Ayrad

0

Есть ли вероятность, что вы включили две разные версии для mysql-connector-java? У меня была такая ошибка. Оказалось, что я случайно включил другую версию, поэтому эта конкретная версия не была доступна (это была транзитивная зависимость, которая по особым причинам я не мог исключить). Я переместил зависимость в начале всех других зависимостей (в вашем случае это может быть в конце), и это сработало. Теоретически наличие двух версий одинаковой зависимости не должно вызывать ошибки.

Смежные вопросы