Maven依存関係としてのExtJ

なぜ


WebクライアントとしてExtJsアプリケーションを使用するJavaプロジェクトがいくつかあります。 ライブラリは率直に言って小さくありません。 60Mメガバイトを超える完全なアーカイブの重量があり、現在開発中のアプリケーションはCVSからこれらすべてをドラッグしてダウンロードする必要があります。 最後に遅いインターネットを追加すると、すべてが非常に悲しくなります。 アプリケーションには12個のクラスもあり、その重みはすでに50メガバイトを超えています。

なに


このライブラリをプラグインとして設計するというアイデアがありました。 RTFMをある程度共有した後、Mavenを介してこれを行うことが決定されました。
彼は戦争レイアウトのようなものを持っています。 複数のアプリケーションを1つに「接着」することができ、何を含めるか、何を含めないかを明確に示すことができます。

どうやって


  1. オーバーレイプロジェクトの作成

    ここではすべてが簡単です。
    1. 空のWebアプリケーションを作成します。
    2. フォルダーへ
      src/main/webapp/lib/extJs/ 
      (プロジェクトのルートに相対的な方法。構成とSWISになりたいかどうかによって異なります)
      サイトSenchiからダウンロードしたExtJsでアーカイブを解凍します。
      注意! 投稿の執筆時点では、アーカイブにはext-VERSION_ExtJsフォルダーが含まれていました。 このフォルダは必要ありません。 その内容を解凍する必要があります。 これにより、どのバージョンのextJでも同じパスを使用できます。 バージョンは別の場所で管理します。
    3. プロジェクト設定のpom.xmlでは、登録することを忘れないでください
       <version>__ExtJs-RELEASE</version> 
      そして
       <packaging>war</packaging> 

      今やるべきことは
       mvn clean install 
      ローカルのMavenリポジトリにアップロードするか、Jenkinsを設定してCSVリポジトリを監視し、新しいバージョンをnexusに自動的にダウンロードします。

  2. 別のプロジェクトに接続する

    pom.xmlでは、上記で作成したプロジェクトへの依存関係を指定する必要があります
      <!--Overlays--> <dependency> <groupId>org.me</groupId> <artifactId>extjs-overlay</artifactId> <type>war</type> <version>4.2-RELEASE</version> <scope>runtime</scope> </dependency> 

    プラグインを構成します
     <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <overlays> <overlay> <groupId>org.me</groupId> <artifactId>extjs-overlay</artifactId> </overlay> </overlays> </configuration> </plugin> 

    そこで、アセンブリに含まれないファイルを指定できます。
     <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <overlays> <overlay> <groupId>org.me</groupId> <artifactId>extjs-overlay</artifactId> <excludes> <exclude>lib/extjs/*</exclude> </excludes> </overlay> </overlays> </configuration> </plugin> 


まとめ


pom.xmlの依存関係バージョンを変更するだけで、ExtJsバージョンを更新できました。 スケールの反対側では、Mavenのオーバーレイ処理は速すぎませんが、これは不要なものをすべて排出することで解決されます。 さらに、いくつかの基本的なExtJs関数をオーバーロードすることにした場合、すべてのプロジェクトにコードをコピーする必要はありません。

Maven Warプラグインのドキュメント


Source: https://habr.com/ru/post/J188110/


All Articles