10

私は Java ベースの GitHub プロジェクト、fitnessjiffy-springを持っています(現在、「ブートストラップ」ブランチに注力しています)。これは、別の GitHib プロジェクト、 fitnessjiff-etlから構築されたライブラリに依存しています。これらの両方が Travis CI によってビルドされるように構成しようとしています。

残念ながら、Maven ベースの Java プロジェクトを扱う点では、Travis は Jenkins や Hudson ほど洗練されていません。Jenkins はプロジェクト間の依存関係を簡単に処理できますが、Travis には同じ概念が存在しないようです。あるプロジェクトが別のプロジェクトに依存している場合、その他のプロジェクトは以前にビルドされている必要があります...そしてそのアーティファクトは、最初のプロジェクトが後でダウンロードできるMavenリポジトリにアップロードされます。

私の「fitnessjiffy-etl」ライブラリは問題なくビルドおよびデプロイされています。私はMaven リポジトリのホスティングにBintrayを使用しています。プレーンな HTTP 経由でアーティファクトを明確に確認できます。

http://dl.bintray.com/steve-perkins/maven/

私の「fitnessjiffy-spring」プロジェクトでは、この Maven リポジトリの場所を に直接追加してpom.xml、Travis がアーティファクトの依存関係を見つけられるようにします。 この記事を書いている時点での私の POM の状態は次のとおりです。<repositories>ファイルの下部にある要素に注意してください。

このプロジェクトをローカルでビルドすると、問題なく動作します。" http://dl.bintray.com/ ..."から Maven アーティファクトをダウンロードしているのがわかります。ただし、Travis CI でビルドしようとすると、毎回失敗します。Travis が、指定したリポジトリではなく、Maven Central からアーティファクトをダウンロードしようとしていることがコンソール ログで確認できます。

これは他の人にとって意味がありますか?Maven がローカルでビルドするときに POM ファイルのカスタム リポジトリの場所を利用するのに、Travis CI ビルドで実行するときにこの構成を無視するのはなぜですか?

4

2 に答える 2

6

これをさらに掘り下げると、Travis が Maven Central に独自のプロキシを使用し、Maven がすべての依存関係要求をプロキシ経由で強制するように構成されていることがわかりました。つまり、現時点では、Travis でビルドされたプロジェクトの POM ファイルで指定された追加の Maven リポジトリを使用することはできないようです。

私の場合、プロジェクトが外部 JAR 依存関係を必要としないようにリファクタリングすることになりました。また、Drone.io に切り替えたので、リポジトリで YAML ファイルを持ち運ぶ必要がなくなり、ビルド サーバーで設定を管理できるようになりました (これにはいつも少しばかげたことを感じていました)。

ただし、Drone でさえ、複数のプロジェクト間の依存関係を管理するのは依然として大きな面倒です (Java 開発では非常に一般的です)。Java については、Jenkins や Hudson に代わる適切なツールが現在のところないと思います。おそらく、安価な Digital Ocean ドロップレットやその他の VPS プロバイダー インスタンスで実行されます。

于 2014-09-23T18:30:47.863 に答える
2

インストール段階で$HOME/.m2/settings.xml、カスタム リポジトリの定義を追加します。

キャッシュ:
  ディレクトリ:
  - "$HOME/.m2"
インストール:
- カール -o $HOME/.m2/settings.xml
  https://raw.githubusercontent.com/trajano/trajano/master/src/site/resources/settings.xml
- mvn 依存関係:go-offline
脚本:
- mvn クリーン インストール サイト
于 2016-11-19T14:48:07.410 に答える