Несколько удаленных репозиториев в Maven - PullRequest
0 голосов
/ 24 мая 2011

Я борюсь с этим и до сих пор не могу найти приемлемого решения.

Дело в том, что я использую javax.persistence и eclipselink jar, которые я сказал maven скачать из этого репозитория "

http://mirror.cs.rit.edu/mirrors/eclipse/rt/eclipselink/maven.repo

"(который я назвал" репо затмения "), потому что этих jar-файлов не было в центральном репозитории maven. Итак, maven загружает jar-файлы, устанавливает их в локальный репозиторий, и все работает нормально.

Затем я изменил версию junit с 3.8.x на 4.8.x для запуска некоторых тестов, и вот тут начинается самое интересное; когда я изменил версию junit на 4.8.x, тогда maven пошел скачивать ее из удаленного репозитория, НО он всегда пытается загрузить новую версию junit из eclipse repo , и банка джунит находится в центральном хранилище maven!

После этого я удалил репозиторий eclipse из проекта pom.xml, и maven приступил к поиску и загрузке новой версии junit, И ТАКЖЕ снова пытается загрузить ¡! jar eclipse (javax.persistence и eclipselink), но теперь из центрального репозитория maven, который выдает красивую ошибку, потому что этих файлов нет. Теперь мои вопросы:

1.- почему maven пытается снова загрузить файлы eclipselink, если они находятся в моем локальном репозитории (я уверен в этом) ?. Ммммм, еще лучше, когда я снова записываю eclipse repo в проекте pom.xml, тогда maven перестает пытаться загрузить файлы eclipselink. Похоже, что файлы jar eclipselink связаны с удаленным репозиторием, из которого они были загружены, и когда я удаляю repl eclipse , тогда maven чувствует что-то вроде: эй! эти файлы eclipselink не были загружены из центрального хранилища maven, и я не вижу хранилище, из которого они были загружены, давайте загрузим их снова - это так забавно, загрузить какое-то дерьмо, которое у меня уже есть !!!! - WTF это !!!

2.- почему maven не выполняет поиск в доступных удаленных репозиториях ?, если артефакт отсутствует в одном репозитории, он, вероятно, может быть в следующем.

3.- где написано центральное репозиторий maven, какой файл ?, его нет в файле settings.xml, он спрятан где-то еще. Я пытаюсь добавить больше удаленных репозиториев в maven, но не могу найти, где находится центральный репозиторий maven. Я использую Maven 3.

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

Если кто-то может помочь мне с этим, я буду очень признателен. Заранее спасибо.

По запросу:

<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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>tutorial</groupId>
  <artifactId>chapter02</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>chapter02</name>

  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>javax.persistence</artifactId>
    <version>2.0.0</version>
    </dependency>
    <dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.0.0</version>
    </dependency>
    <dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbyclient</artifactId>
    <version>10.4.2.0</version>
    </dependency>
    <dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
    <version>10.4.2.0</version>
    <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <inherited>true</inherited>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
  </build>
<repositories>
  <repository>
     <id>EclipseLink Repo</id>
     <url>http://mirror.cs.rit.edu/mirrors/eclipse/rt/eclipselink/maven.repo</url>

     <snapshots>
        <enabled>false</enabled>
     </snapshots>
  </repository>    
</repositories>
</project>

Как вы можете видеть, существует репо затмения , если я удаляю это репо затмения из pom.xml, тогда maven начинает загружать файлы eclipselink, которые уже установлены в локальный репозиторий.

Что касается /.m2/settings.xml, у меня нет такого файла, единственный файл settings.xml, который я нашел, находится в $ M2_HOME / conf / settings.xml, и, поверьте мне, нет никаких следов центрального репозитория maven ни какой-либо другой репозиторий. Смотри сам:

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <pluginGroups>
    <pluginGroup>org.mortbay.jetty</pluginGroup>
  </pluginGroups>

  <proxies>
  </proxies>

  <servers>
  </servers>

  <mirrors>
  </mirrors>

  <profiles>
  </profiles>

</settings>

Есть какие-нибудь проблемы?

Ответы [ 2 ]

0 голосов
/ 24 мая 2011

Вместо того, чтобы играть со списками удаленных репозиториев, используйте менеджер репозитория. Начните здесь: http://nexus.sonatype.org

Maven проверит все удаленные репозитории, но если вы уже пытались загрузить артефакт, который не может быть найден, Maven кэширует 404, поэтому вам придется передать опцию -U.

Существует ряд действительно базовых вопросов, на которые вы, вероятно, могли бы ответить сами, если немного погуглили или даже немного потрепались по Stack Overflow.

0 голосов
/ 24 мая 2011

У меня есть много помп, которые добавляют репо и не теряют центральный.Вы можете попробовать скопировать определение центрального репо из глобальных настроек и посмотреть, поможет ли это.Вы можете запустить mvn -X.Вы можете спросить в списке пользователей maven, который имеет более высокую концентрацию знаний.

...