1

私の Java プロジェクトはサードパーティのライブラリに依存しています。xyz.jar としましょう。私のプロジェクトは、svn の git と xyz で管理されています。xyz は私のプロジェクトに Maven の依存関係として含まれているため、ビルド プロセスの一部として自動的にダウンロードされます。

xyz のソースに微調整を加える必要がありますが、それでもプロジェクトのメンテナーから最新情報を入手したいと考えています。どのようなオプションがありますか?

現在、最良の選択肢はこれにあるようです:

  1. を使用して、xyz の svn リポジトリを新しいgit リポジトリにフォークしgit svn cloneます。
  2. git リポジトリをハックします。
  3. git リポジトリから xyz-hacked.jar をビルドし、アーティファクトを Maven ライブラリ サーバーにエクスポートします。

xyz に新しい変更が加えられgit svn rebaseたら、git リポジトリを最新の状態に保つために a を実行できます。

ここでのベストプラクティスは何ですか? このアプローチを改善できますか?

編集

マージの競合を解決したり、パッチが最新の xyz と互換性があることを確認したりするなど、手作業が必要になることは承知しています。私は、一般的な自動化されたコード マージ ソリューションを探しているわけではありません。この状況でのベストプラクティスとツールは何かを見つけようとしています。

グラドル

これは Gradle 固有の質問ではないと思いますが、Gradle 固有の回答がある場合に備えて、Gradle を使用して xyz.jar を「コンパイル」依存関係として含めています。

4

2 に答える 2

1

どのアプローチを使用しても、常に労力がかかります。

明示的な競合が発生しますが、より陰湿なことに、ローカル mod が触れていないソース ファイル (つまり、依存しているインターフェイス シグネチャ) の変更であっても、ベースのどこかで変更を加えると、ローカル mod が完全に壊れる可能性があります。

すべてのリベースには、サードパーティのライブラリとライブラリに依存するアプリケーションでの手動マージと完全な回帰テストが必要です。

定義上、これは自動化できません。

于 2013-07-21T18:18:30.270 に答える
0

アプローチに関しては、次の点を考慮する必要があると思います。

  • プロジェクトのメンテナーが正確にどのようにソース コードを変更するかはわかりません。したがって、rebase を使用してほとんどの更新を適用できますが、ある時点で競合が発生し、手動で解決する必要があります。
  • このサードパーティのライブラリは、おそらく頻繁に変更されることはありません。たとえそうであっても、依存関係をすぐに更新しなければならないという意味ではありません。何のために?とにかくコードに影響を与えないライブラリへの更新がたくさんある可能性があります。では、なぜそれを気にするのですか?

私の意見では、この種の問題は自動化されるべきではありません。これは非常にまれにしか発生せず、とにかく手動での介入が必要になるからです。つまり、たとえば半年に 1 回、手動で再構築を行う場合よりも、これを自動化しようとすると、はるかに多くの時間を費やすことになります。

于 2013-07-21T18:15:51.987 に答える