パッケージ管理の基本的な質問。

AとB という2つの対象VMがあって、それぞれ環境依存なAPIがあります。

そこで、環境依存な部分と環境に依存しない部分にわけて開発しています。
で、環境に依存しない部分を package kaihatsu.main、依存する部分を
package kaihatsu.A、package kaihatsu.B としてわけています。
kaihatsu.A、kaihatsu.BはAPIの表面はどちらも同一にしています。

ところがこの分け方だと結局環境依存な部分のパッケージを呼び出す部分が
そもそも環境に依存する形になるので、それぞれへリリースするとき
import文を書き換えてからコンパイルすることになり、なんだかスマートじゃありません。

根本的な考え方が間違っていると思うんですけど、どうもいい考えが
浮かびません。だれかヒントください。