一方、メモリ内のアセンブリには、2つの非常に重要な利点があります。
- ハードドライブでの入出力操作の欠如によるアセンブリ速度の大幅な向上(これは、特に5400 rpmの回転速度を備えた従来のハードドライブに当てはまります)
- 集中的な書き込み操作をメモリに移動することにより、SSDの寿命を延ばします
近年、平均的な開発者のコンピューター上のRAMの量が大幅に増加し、SSDがあらゆる場所で使用され始めていることを考慮すると、実質的に反対意見はありません。
この短い記事の主な目標は、「しかし本当に! そして、これについてどう考えたことがなかったのですか?」
Linuxでのこのアプローチの実装例について説明します。 RAMディスク自体を作成する方法を除き、他のオペレーティングシステムでのアクションはほぼ同じです。
RAMディスクの作成
/ etc / fstabファイルをお好みのエディターで編集します。例:
gksudo -k gedit /etc/fstab
それに用語を追加します
tmpfs /tmp tmpfs mode=1777 0 0
RAMディスクに/ tmpフォルダーをマウントし、その中のすべてのプロジェクトを収集することを好みます。これには追加の利点があります-他のプログラムの一時ファイルもSSDディスクを使用しません。 さらに嬉しいことに、コンピューターを再起動するとすべてのゴミが自動的に削除されます。
Mavenセットアップ
最初に、プロジェクトのルートpomファイルに追加のパラメーターを入力する必要があります。このパラメーターは、アセンブリフォルダーを指し、デフォルトのアセンブリフォルダーに向けます。 これは、必要な変更が他の開発者に影響を与えないようにするためです。
<project> ... <properties> <target.directory>${basedir}/target</target.directory> </properties> ... <build> <directory>${target.directory}</directory> ... </build> ... </project>
また、$ {basedir} / targetを使用できるプロジェクトpomファイルの他の場所にも注意を払う必要があります。
たとえば
jetty-maven-plugin
<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.0.6.v20130930</version> <configuration> <war>${target.directory}/myproject-web</war> <classesDirectory>${target.directory}/classes</classesDirectory> <webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory> <webApp> <contextPath>/</contextPath> <jettyEnvXml>${basedir}/src/main/resources/jetty-env.xml</jettyEnvXml> <defaultsDescriptor>${basedir}/src/main/resources/webdefault.xml</defaultsDescriptor> <descriptor>${basedir}/src/main/webapp/WEB-INF/web.xml</descriptor> </webApp> ... </configuration> ... </plugin>
最後のステップは残ります-変数$ {target.directory}が必要な値を持ち、pomファイルで指定された値を持たないようにローカルMaven設定を変更します。
Maven構成ファイルを〜/ .m2にコピーします(必要な場合)
cp /usr/share/maven/conf/settings.xml ~/.m2/settings.xml
現在のユーザーの「.m2」フォルダー内のsettings.xmlを編集します
gedit ~/.m2/settings.xml
新しいプロファイルを作成する
<profiles> ... <profile> <id>RAMBuild</id> <properties> <target.directory>/tmp/maven/${project.groupId}.${project.artifactId}/target</target.directory> </properties> </profile> ... </profiles>
アクティブのリストに新しいプロファイルを追加します。
<activeProfiles> .... <activeProfile>RAMBuild</activeProfile> .... </activeProfiles>
以上です。 ビルドがより高速になり、ディスクの耐久性が向上することを願っています。