10

Javaビルドシステムでパッケージの依存関係に制限を課す可能性は何ですか? たとえば、クラスはパッケージmyapp.server.bl.Customerを参照できません。myapp.client.ui.customlayoutAnt ベースまたは IDE 固有のソリューションに興味があります。

(カスタム) パッケージの依存関係規則に違反し、ビルドが中止されたことを示すエラー メッセージをビルドで取得したいと考えています。また、Ant スクリプトや IDE プロジェクト ファイルの外部で、できればテキスト ファイルで依存関係をリストに維持したいと考えています。

(私はMavenを知りませんが、モジュールの依存関係管理のサポートが向上していることをここで読みました)

4

7 に答える 7

7

Checkstyle にはそのためのチェック機能があると思います。輸入規制といいます

于 2008-09-29T16:43:31.213 に答える
6

アクセス ルールを指定するように Eclipse プロジェクトを構成できます。アクセス ルールでは、「禁止」、「非推奨」、および「アクセス可能」レベルをすべてワイルドカード ルールで指定できます。次に、ビルド中に警告またはエラーのいずれかとしてフラグが立てられるように、落胆または禁止のいずれかの違反を構成できます。

アイデアに関する古い記事のようなもの (詳細は古くなっている可能性があります):

http://www.eclipsezone.com/eclipse/forums/t53736.html

Eclipse (または OSGi) プラグインを使用している場合、プラグイン/モジュールの「パブリック」部分が明示的に定義され、これがモデルの一部になります。

于 2008-09-29T17:02:01.853 に答える
3

ivyは、問題の良い解決策のようです (ant を使用している場合)。Ivy は Ant の公式の依存関係管理コンポーネントであるため、ant とうまく統合されます。依存関係の解決、競合の処理、除外の作成などを行うことができます。

単純な xml 構造を使用して依存関係を記述し、依存関係の解決の問題のみに対処しようとするため、Maven よりも使いやすくなっています。

アイビーのホームページから:

Ivy は、プロジェクトの依存関係を管理 (記録、追跡、解決、報告) するためのツールです。次のような特徴があります。

  1. 柔軟性と構成可能性 - Ivy は本質的にプロセスにとらわれず、方法論や構造に縛られていません。代わりに、幅広い依存関係管理とビルド プロセスに適応するために必要な柔軟性と構成可能性を提供します。
  2. Apache Ant との緊密な統合 - スタンドアロン ツールとして利用できますが、Ivy は Apache Ant と特にうまく連携し、依存関係の解決から依存関係のレポートと公開に至るまで、多数の強力な Ant タスクを提供します。
于 2008-09-29T20:39:38.383 に答える
3

IDE 固有のソリューションの場合、IntelliJ IDEA には依存関係分析ツールがあり、無効な依存関係も定義できます。 http://www.jetbrains.com/idea/webhelp2/dependency-validation-dialog.html

依存関係違反は、コンパイル時とライブ時の両方で、依存クラスの編集中に (右側のエラー バーにエラー/警告ストライプとして) 表示されます。

JetBrains の TeamCity ビルド サーバーを使用すると、さらに多くの自動化を実現できます。これは、検査ビルドを実行し、上記の構成済みチェックを報告できます。

別の IDE に依存しないソリューションとして、AspectJ を使用して無効な依存関係を宣言できます (問題の警告/エラー情報を取得するために、ビルド プロセスにステップを統合します)。

于 2008-09-30T03:00:55.893 に答える
1

たぶんClasssycleを使用することができます:http: //classycle.sourceforge.net/ddf.html

于 2011-09-19T10:59:35.380 に答える
1

IDEA または Maven で複数のモジュールを使用したり、Eclipse および Gradle で複数のプロジェクトを使用したりできます。コンセプトはどの場合も同じです。

自明な解釈は、myapp.server.bl のモジュールとmyapp.client.ui.customlayout別のモジュールであり、どちらにもコンパイル時の依存関係はありません。これで、反対側のモジュール/プロジェクトに対してコードをコンパイルしたり、コードを完成させたりしようとすると、必要に応じて失敗します。

問題がすでにどの程度広がっているかを監査するには、IntelliJ IDEA の便利な出発点はAnalyzing Dependenciesです。

http://www.jetbrains.com/idea/webhelp/analyzing-dependencies.html

その記事から、プロジェクトの依存関係分析を実行して対応する方法を確認できます。

于 2010-03-25T13:27:39.887 に答える
1

Eclipse は Build Path プロパティ / jar プロパティを介してこれをサポートしています。jar/プロジェクトの境界を越えてのみ機能する可能性があると思います。

于 2008-09-29T16:49:06.723 に答える