proxy環境下で scpを使って site-deploy出来ないときの対応

maven-site-pluginに報告あり : MSITE-211

で、このエントリは 現象としては mvn site-deploy すると ProxyHTTPうんぬんエラーになる という件に対する対応方法です。

エラーの断片

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error uploading site

Embedded error: Cannot connect. Reason: ProxyHTTP: java.io.IOException: proxyerror: Forbidden


この現象が発生するには、以下の前提があるようです。

  • deploy先のdistributionManagement 設定では scp://... を指定している
  • 普段、proxy環境。つまりsettings.xmlに proxyのsettingが書かれている
  • 加えて、site-deploy先は nonProxyHostsの対象である
  • 利用している maven-site-plugin は 2.0-beta-6 以前のものである

たとえば、社内でmavenを使っている場合で、proxyを使って外のリポジトリにはアクセスしているが、site-deployする先は社内サーバだ、というような場合は上記に該当しやすくなります(私もこうでした)。

上記のMSITE-211でも報告されている通り、maven-site-pluginの 2.0-beta-7-SNAPSHOT で解消しているはず、とのことです。

試してみたらうまくいきました。以下、2.0-beta-7-SNAPSHOTをどうやって使うか、という手順になります。

maven snapshot repositoryを使うようにする

pom.xmlに以下のような行を追加するといいみたいです

  
    .
    .
    
      maven-snapshot-repository
      Maven Snapshot Repository
      http://people.apache.org/maven-snapshot-repository/
    
  
  
    .
    .
    
      maven-snapshot-repository
      Maven Snapshot Repository
      http://people.apache.org/maven-snapshot-repository/
    
  

repositoriesだけでも pluginRepository だけでもうまくいかなかったので、とりあえずは両方に入れてあります。

maven-site-pluginのバージョンを指定する

pom.xmlを修正します

    
      .
      .
      
      	org.apache.maven.plugins
      	maven-site-plugin
      	2.0-beta-7-SNAPSHOT
        .
        .
      
    

おわり

あとは $ mvn site:deploy してみてください。
SNAPSHOTというのもアレだけど、そのうちなんとかならんのかな。