6

特定のバージョン管理された jar を使用してメソッドを実装するが、パブリックまたは保護された API でその jar から型を公開しないという一般的なケースを検討してください (プライベート メソッドのメソッド シグネチャでのみ)。

今私が欲しいのは、元のパッケージ名を名前マングリングし、SBT 内で生成されたコードに置き換えることによって、このコードのコンパイル時の自動リンクです (繰り返しますが、プラグインを SBT に追加するか、build.sbt の設定を追加したいです)。これはすべてでこれを行いますsbt compile)。

これの目的は、同じパッケージ/クラス名を持つ複数の互換性のないバージョンのクラスによるクラスパス エラーを回避することです。注:上記の状況では、インライン化またはこの名前マングリングは常に機能し、バージョン地獄を回避することができます(大きなjarを犠牲にして)。

4

1 に答える 1

1

これは、ProGuardでできることのように思えます。SBT ProGuard プラグインがありますが、積極的にメンテナンスされていないようです。

個人的に言えば、この問題に取り組んでいるとしたら、名前マングリングではなく、カスタム クラスローダーに解決策を求めるでしょう。

于 2012-12-31T21:48:51.487 に答える