简体   繁体   English

如何在第谷 maven 插件中使用代理?

[英]How to use proxy with Tycho maven plugin?

I'm trying to build the Eclipse Kura project from behind a corporate firewall.我正在尝试从公司防火墙后面构建 Eclipse Kura 项目。

When I try to build kura/examples/org.eclipse.kura.example.camel.aggregation ( mvn clean install ), it ends with :当我尝试构建 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

I've tried to set up a proxy with :我尝试使用以下方法设置代理:

               <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>

But it didn't work.但它没有用。 The Kura project is using v0.20.0 of tycho-maven-plugin, I've tried to upgrade to 1.0.0 but it didn't work. Kura 项目使用的是 tycho-maven-plugin 的 v0.20.0,我尝试升级到 1.0.0 但它没有用。

When I setup the same proxy in a browser, I can reach " http://packagedrone.eclipse.org/p2/eclipse-kura-2.1 "当我在浏览器中设置相同的代理时,我可以访问“ http://packagedrone.eclipse.org/p2/eclipse-kura-2.1

UPDATE : I have also already defined my proxy in maven settings.xml, which works to find dependencies in various repositories, but which is not taken into account by Tycho maven plugin :更新:我也已经在 maven settings.xml 中定义了我的代理,它可以在各种存储库中查找依赖项,但第谷 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>

UPDATE 2 :更新 2:

maven debug logs when running with -X and -s settings.xml :使用 -X 和 -s settings.xml 运行时的 maven 调试日志:

[DEBUG] Clearing proxy settings in OSGi runtime

(This is the only mention of "proxy" corresponding to the Tycho plugin source, no "Configuring proxy" and no "Ignoring proxy", it's like no "active" proxy has been found) (这是第谷插件源唯一提到的“代理”,没有“配置代理”和“忽略代理”,就像没有找到“活动”代理一样)

[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

UPDATE 3 : My bad on "UPDATE 2", I've done so many tests with so many settings I used the wrong file for this test.更新 3 :我对“更新 2”的不满,我已经用如此多的设置进行了如此多的测试,我在此测试中使用了错误的文件。

Here is the output with a proxy correctly setup (still failing) :这是正确设置代理的输出(仍然失败):

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.

And if I setup explicitly the system properties asked in the warning :如果我明确设置警告中询问的系统属性:

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.

Tycho derives its configuration from settings.xml, you will need to provide both http and https proxy elements with different IDs(in order to avoid getting overlapped in Tycho configuration file) in Maven's settings.xml. Tycho 从 settings.xml 派生其配置,您需要在 Maven 的 settings.xml 中提供具有不同 ID 的 http 和 https 代理元素(以避免在 Tycho 配置文件中重叠)。

<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 is right, you should configure the proxy in maven's settings.xml khmarbaise 是对的,你应该在 maven 的 settings.xml 中配置代理

maven debug log (mvn clean install -X) should give you output from 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 https://github.com/eclipse/tycho/blob/f42e43c5722c0f74e55c5c03259476ac8b6f8836/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/OSGiProxyConfigurator.java#L65

If it doesn't, your proxy settings are not taken into account for some reason如果没有,您的代理设置由于某种原因不会被考虑在内

For further debugging on the HTTP client level, use apache HTTP client tracing, see https://wiki.eclipse.org/Equinox/p2/Reporting_Problems -> Reporting network connection issues对于 HTTP 客户端级别的进一步调试,请使用 apache HTTP 客户端跟踪,请参阅https://wiki.eclipse.org/Equinox/p2/Reporting_Problems -> 报告网络连接问题

Another prerequisite to double-check is whether your build actually works without a proxy and with a clean local maven repo.仔细检查的另一个先决条件是您的构建是否在没有代理和干净的本地 maven 存储库的情况下实际工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM