Maven +確信:プロキシ設定

私はhttpunitを使ってサーバーにアクセスしています。

私はこれのためのプロキシ設定(httpとhttps)を設定する必要があります。

settings.xmlファイルで設定を行いましたが、確かにそれを無視するようです!

私は可能な限り構成を複製することを避けたい。

確かなプラグインの設定で私は試みた:


    ${http.proxyHost}

そして

-Dhttp.proxyHost=${http.proxyHost}

そして

-Dhttp.proxyHost=${settings.proxies[protocol=http].host}

そして several other combinations.

私はユニットテストのシステムプロパティを次のように出力します。

fまたは (String propertyName : new TreeSet(System.getProperties().stringPropertyNames())){
        System.out.println(propertyName + ": " + System.getProperty(propertyName));
    }

これまでに働いたのは明示的な値だけです:


    myProxy

または

-Dhttp.proxyHost=myProxy

しかし、私が言ったように、私は可能な場合、構成を複製したくありません。

ユニットテストでsettings.xmlファイルに設定されているプロキシ設定を使用するにはどうすればよいですか?

10
settings.xml http.proxyHost プロパティとして持つのはどうでしょうか?私は現在、 proxy の設定値を使用しようとしていると思います。
追加された 著者 Raghuram,

3 答え

私は、必要に応じてシステムプロパティを介してMavenにすべてのプロキシ関連の設定を提供し、親POMに設定されている設定を実行時に検出するための調整を行うことで解決しました。

1)プロキシ設定が必要な環境では、Maven( "〜/ .mavenrc" または "%PROFILE%\ mavenrc_pre.bat" )のRCファイルを > MAVEN_OPTS の中にあります。例えば:

set MAVEN_OPTS=-Dhttp.proxyHost=10.0.1.250 -Dhttp.proxyPort=3128 -Dhttp.nonProxyHosts="localhost|*.local|*.mylab.com"

2)プロキシ設定が提供されたかどうかを検出し、Surefireの引数を作成します。


    org.codehaus.gmaven
    groovy-maven-plugin
    2.0
    
        
            initialize
            
                execute
            
        
    
    
        
            
                    if ( k.startsWith("http.") || k.startsWith("https.") )
                    {
                       //We have to escape pipe char in 'nonProxyHosts' on Windows
                        if (System.properties['os.name'].toLowerCase().contains('windows'))
                            v = v.replaceAll( "\\|", "^|" );
                        settings += "-D$k=$v ";
                    }
                }
                project.properties["proxy.settings"] = settings;
            ]]>
        
    

3)SurefireとFailsafeプラグインで準備された引数を使用する:


    org.apache.maven.plugins
    maven-surefire-plugin
    2.18.1
    
        ${proxy.settings}
        true
    


    org.apache.maven.plugins
    maven-failsafe-plugin
    2.18.1
    
        ${proxy.settings}
        true
    

楽しい :)

3
追加された

Maven SurefireプラグインのforkModeのデフォルトは "once"です。私はこれを「決して」設定しないでビルドをやり直すことをお勧めします。ここでの私の理論は、Surefireプラグインが新しいJVMをフォークしているため、システムプロパティを失っているということです。

1
追加された
確信は、システムプロパティを目的に応じて「緩め」ます。これは、あなたのテストにきれいな環境を提供するふりをします。
追加された 著者 Anton,

Mavenのsettings.xmlファイルを編集してプロキシを追加すると、私のために正常に動作しました。 UbuntuとAWS Linuxでは、パスは /var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven/conf です。

<!-- proxy
 | Specification for one proxy, to be used in connecting to the network.
 |

  optional
  true
  http
  proxyuser
  proxypass
  proxy.host.net
  80
  local.net|some.host.com

-->
0
追加された