Maven-3.3.9 всегда вытягивает зависимости из удаленного, а не из локального - PullRequest
0 голосов
/ 24 декабря 2018

Я перехожу с Maven-3.0.X на Maven-3.3.9, чтобы адаптировать последние версии плагинов верной версии.

Но проблема, с которой я сталкиваюсь, заключается в том, что во время этой миграции я обнаружил, что Maven всегда извлекает зависимости из удаленного, а не локального, даже если у нас есть репозитории, доступные в локальном.Я надеюсь, что Maven сначала будет искать локальный, если зависимости NA затем вытащат удаленный.

Примечание

1) Я могу заставить моего maven выполнить автономную сборку [-o] или передача -Dmaven.legacyLocalRepo = true для работы, которую я не хочу реализовывать.

2) Пробовал с опцией UpdatePolicy = "never", но не повезло

POM.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>com</groupId>
    <artifactId>test</artifactId>
    <version>1.0.0</version>
    <packaging>mule</packaging>
    <name>Test Application</name>

    <build>
        <plugins>
            <plugin>
                <groupId>org.mule.tools.maven</groupId>
                <artifactId>mule-app-maven-plugin</artifactId>
                <version>1.7</version>
                <extensions>true</extensions>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2.1</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>project</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.7</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.7</version>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>com.mulesoft.muleesb</groupId>
            <artifactId>mule-core</artifactId>
            <version>3.6.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>Central</id>
            <name>Central</name>
            <url>http://repo1.maven.org/maven2/</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>mulesoft-releases</id>
            <name>MuleSoft Releases Repository</name>
            <url>http://repository.mulesoft.org/releases/</url>
            <layout>default</layout>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>Central</id>
            <name>Central</name>
            <url>http://repo1.maven.org/maven2/</url>
            <layout>default</layout>
        </pluginRepository>
        <pluginRepository>
            <id>mulesoft-releases</id>
            <name>mulesoft release repository</name>
            <layout>default</layout>
            <url>http://repository.mulesoft.org/releases/</url>
        </pluginRepository>
    </pluginRepositories>
</project>

Журнал ошибок

Downloading from repo.nexus: http://127.0.0.1:9080/nexus/content/repositories/public/org/mule/tools/maven/mule-esb-maven-plugins/1.7/mule-esb-maven-plugins-1.7.pom
Downloading from jfrog: http://repo.jfrog.org/artifactory/plugins-releases-local/org/mule/tools/maven/mule-esb-maven-plugins/1.7/mule-esb-maven-plugins-1.7.pom
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Unresolveable build extension: Plugin org.mule.tools.maven:mule-app-maven-plugin:1.7 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.mule.tools.maven:mule-app-maven-plugin:jar:1.7 @ 
[ERROR] Unknown packaging: mule @ line 8, column 16
 @ 
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR]   The project com.test:TEST_PROJECT:1.0-SNAPSHOT (/usr/local/TEST_PROJECT/pom.xml) has 2 errors
[ERROR]     Unresolveable build extension: Plugin org.mule.tools.maven:mule-app-maven-plugin:1.7 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.mule.tools.maven:mule-app-maven-plugin:jar:1.7: Could not transfer artifact org.mule.tools.maven:mule-esb-maven-plugins:pom:1.7 from/to jfrog (http://repo.jfrog.org/artifactory/plugins-releases-local): Connect to repo.jfrog.org:80 [repo.jfrog.org/52.7.30.14, repo.jfrog.org/34.231.202.145] failed: Connection timed out -> [Help 2]
[ERROR]     Unknown packaging: mule @ line 8, column 16
[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:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/PluginManagerException

Я ожидаю, что Maven сначала будет ссылаться на локальный, а затем на удаленный, так как он работал раньше в Maven-3.0.X.

1 Ответ

0 голосов
/ 27 декабря 2018

Я пытался построить ваш образец pom.xml с Maven 3.3.9 (и 3.6.0): нет com.mulesoft.muleesb:mule-core:3.6.0:jar;Наиболее близким кажется org.mule:mule-core:3.6.0.

Если POM указанной зависимости не найден, Maven выдаст предупреждение и сохранит файл .lastUpdated.Файл содержит отметку времени, указывающую, когда была выпущена ошибка для некоторого репозитория.

Когда некоторое время прошло между двумя выполнениями или если используется -U, Maven попытается загрузить зависимость (или его ПОМ).Я думаю, что именно здесь вы и получили свою ошибку.

POM не является обязательным для Maven, он выдает предупреждение:

[WARNING] The POM for com.mulesoft.muleesb:mule-core:jar:3.6.0 is missing, no dependency information available

Однако, когда он пытается загрузить его, он должен по крайней мередо какой-то 404 NOT FOUND: я использовал какой-то локальный несвязанный IP, и это тоже не удалось:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Test Application 1.0.0
[INFO] ------------------------------------------------------------------------
Downloading: https://192.168.113.145/com/mulesoft/muleesb/mule-core/3.6.0/mule-core-3.6.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22.336 s
[INFO] Finished at: 2018-12-27T20:04:11+01:00
[INFO] Final Memory: 10M/245M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project test: Could not resolve dependencies for project com:test:mule:1.0.0: Failed to collect dependencies at com.mulesoft.muleesb:mule-core:jar:3.6.0: Failed to read artifact descriptor for com.mulesoft.muleesb:mule-core:jar:3.6.0: Could not transfer artifact com.mulesoft.muleesb:mule-core:pom:3.6.0 from/to bintray (https://192.168.113.145): Connect to 192.168.113.145:443 [/192.168.113.145] failed: Connection timed out: connect -> [Help 1]

Эта ошибка не такая, как у вас, но это, по крайней мере, более или менее объясняет, почему Maven выбралremote.

Существуют и другие случаи:

  • Maven попытается загрузить метаданные плагина из репозиториев, если у плагина / зависимости нет явной версии (это означает «принять последнюю версию»).возможно в ограниченном диапазоне [например: версия maven, транзитивная зависимость ...,).Плагин по умолчанию, например maven-clean-plugin, исправлен в версии Maven.
  • Вы используете SNAPSHOT версию, и Maven будет загружать самую последнюю версию (если она не отключена в <repository>)

При этом, я думаю, что ваша проблема (ваш вопрос) является неправильной:

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

Тот факт, что Maven отказывает, потому что не может найти зависимость удаленно, означает, что в вашей конфигурации ваша сборка не будет работать на другомmachine:

  1. Ваш репозиторий Nexus (http://127.0.0.1:9080/nexus) не хранит зависимость, что означает, что он не выполняет свое предназначение (наличие корпоративного репозитория - это устранение проблем извне, в первую очередь это удаление илизамена).
  2. Он должен быть не в 127.0.0.1, а на отдельном сервере, если ваш прокси-сервер не является корпоративным хранилищем для вашего локального хоста для другие причины;по крайней мере, он должен иметь резервную копию.
  3. Ваш settings.xml должен использовать зеркало для этого хранилища (если вы хотите быть уверены, что ваш файл зависимостей / плагин не загружается из внешнего источника).

В частности, если вы измените локальный репозиторий (например, указав <localRepository> на ~/.m2/repository.fresh), сборка не должна завершиться сбоем из-за этих отсутствующих зависимостей.

...