Как использовать прокси с плагином Tycho maven?

Я пытаюсь построить проект Eclipse Kura из-за корпоративного брандмауэра.

Когда я пытаюсь собрать kura / examples / org.eclipse.kura.example.camel.aggregation (mvn clean install), заканчивается:

Internal error: java.lang.RuntimeException: Failed to load p2 repository with ID 'eclipse.kura' from location http://packagedrone.eclipse.org/p2/eclipse-kura-2.1
(...)
Caused by: java.lang.RuntimeException: Failed to load p2 repository with ID 'eclipse.kura' from location http://packagedrone.eclipse.org/p2/eclipse-kura-2.1
    at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.loadMetadataRepository(TargetPlatformFactoryImpl.java:296)
(...)
Caused by: java.net.SocketTimeoutException: Read timed out

Я попытался настроить прокси с:

               <plugin>
                        <groupId>org.eclipse.tycho</groupId>
                        <artifactId>tycho-maven-plugin</artifactId>
                        <version>${tycho-version}</version>
                        <extensions>true</extensions>
                        <configuration>
                                <argLine>-Dhttp.proxyHost=my-proxy-web -Dhttp.proxyPort=3128</argLine>
                        </configuration>
                </plugin>

Но это не сработало. Проект Kura использует v0.20.0 tycho-maven-plugin, я пытался обновить его до 1.0.0, но это не сработало.

Когда я настраиваю тот же прокси в браузере, я могу открыть " http://packagedrone.eclipse.org/p2/eclipse-kura-2.1"

ОБНОВЛЕНИЕ: я также уже определил свой прокси в maven settings.xml, который работает для поиска зависимостей в различных репозиториях, но который не учитывается плагином Tycho maven:

  <proxies>
    <proxy>
      <id>main-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>my-proxy-web</host>
      <port>3128</port>
      <nonProxyHosts>*.mycomp.fr</nonProxyHosts>
    </proxy>
  </proxies>

ОБНОВЛЕНИЕ 2:

журналы отладки maven при работе с -X и -s settings.xml:

[DEBUG] Clearing proxy settings in OSGi runtime

(Это единственное упоминание о "прокси", соответствующем источнику плагина Tycho, без "Конфигурирования прокси" и без "Игнорирования прокси", похоже, что "активный" прокси не найден)

[INFO] Computing target platform for MavenProject: org.eclipse.kura:org.eclipse.kura.example.camel.aggregation:1.1.0 @ /home/tristan/Dev/projects/IOT/kura.git/kura/examples/org.eclipse.kura.example.camel.aggregation/pom.xml
[DEBUG] Added p2 repository eclipse.kura (http://packagedrone.eclipse.org/p2/eclipse-kura-2.1)
[DEBUG] Using execution environment 'JavaSE-1.7' configured in Bundle-RequiredExecutionEnvironment
[DEBUG] Registered artifact repository org.eclipse.tycho.repository.registry.facade.RepositoryBlackboardKey(uri=file:/resolution-context-artifacts@/home/tristan/Dev/projects/IOT/kura.git/kura/examples/org.eclipse.kura.example.camel.aggregation)
[INFO] Adding repository http://packagedrone.eclipse.org/p2/eclipse-kura-2.1
[WARNING] Failed to access p2 repository http://packagedrone.eclipse.org/p2/eclipse-kura-2.1, use local cache.
org.eclipse.equinox.p2.core.ProvisionException: Unable to read repository at http://packagedrone.eclipse.org/p2/eclipse-kura-2.1/content.xml.
(...)
Caused by: org.apache.http.conn.ConnectTimeoutException: Connect to packagedrone.eclipse.org:80 timed out

ОБНОВЛЕНИЕ 3: Моя ошибка в "ОБНОВЛЕНИИ 2", я сделал так много тестов с таким количеством настроек, что использовал неправильный файл для этого теста.

Вот вывод с правильной настройкой прокси (все еще не работает):

mvn clean install -X -s good-settings-with-proxy.xml

[DEBUG] Clearing proxy settings in OSGi runtime
[DEBUG] Configuring proxy for protocol http: host=10.91.31.45, port=3128

!ENTRY org.eclipse.core.net 1 0 2017-04-28 18:02:58.106
!MESSAGE System property http.proxyHost is not set but should be 10.91.31.45.

!ENTRY org.eclipse.core.net 1 0 2017-04-28 18:02:58.106
!MESSAGE System property http.proxyPort is not set but should be 3128.

И если я настрою явно системные свойства, указанные в предупреждении:

mvn clean install -X -Dhttp.proxyHost=10.91.31.45 -Dhttp.proxyPort=3128 -s /home/tristan/CODE/apache-maven-3.2.3/conf/settings.with-proxy.xml

!ENTRY org.eclipse.core.net 1 0 2017-04-28 18:02:58.079
!MESSAGE System property http.proxyHost has been set to 10.91.31.45 by an external source. This value will be overwritten using the values from the preferences

!ENTRY org.eclipse.core.net 1 0 2017-04-28 18:02:58.079
!MESSAGE System property http.proxyPort has been set to 3128 by an external source. This value will be overwritten using the values from the preferences
[DEBUG] Clearing proxy settings in OSGi runtime
[DEBUG] Configuring proxy for protocol http: host=10.91.31.45, port=3128, nonProxyHosts=*.edf.fr

!ENTRY org.eclipse.core.net 1 0 2017-04-28 18:02:58.106
!MESSAGE System property http.proxyHost is not set but should be 10.91.31.45.

!ENTRY org.eclipse.core.net 1 0 2017-04-28 18:02:58.106
!MESSAGE System property http.proxyPort is not set but should be 3128.

1 ответ

Tycho получает свою конфигурацию из settings.xml, вам нужно будет предоставить элементы прокси как http, так и https с разными идентификаторами (чтобы избежать перекрытия в файле конфигурации Tycho) в Maven settings.xml.

<proxies>
  <proxy>
    <id>123</id>
    <active>true</active>
    <protocol>https</protocol>
    <host>my-proxy-web</host>
    <port>3128</port>
    <nonProxyHosts>*.mycomp.fr</nonProxyHosts>
  </proxy>
  <proxy>
    <id>321</id>
    <active>true</active>
    <protocol>http</protocol>
    <host>my-proxy-web</host>
    <port>3128</port>
    <nonProxyHosts>*.mycomp.fr</nonProxyHosts>
  </proxy>
</proxies>

khmarbaise прав, вы должны настроить прокси в maven settings.xml

журнал отладки maven (mvn clean install -X) должен выдавать вывод

https://github.com/eclipse/tycho/blob/f42e43c5722c0f74e55c5c03259476ac8b6f8836/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/OSGiProxyConfigurator.java#L65

Если это не так, ваши настройки прокси-сервера не принимаются во внимание по какой-либо причине

Для дальнейшей отладки на уровне HTTP-клиента используйте трассировку HTTP-клиента apache, см. https://wiki.eclipse.org/Equinox/p2/Reporting_Problems -> Сообщение о проблемах сетевого подключения.

Еще одним предварительным условием для двойной проверки является то, что ваша сборка действительно работает без прокси и с чистым локальным репозиторием Maven.

Другие вопросы по тегам