jarファイルをローカルリポジトリにインストール@maven [Java]
jarファイルをインストールするなら、mvn installでインストールすればいいわけですが、compileやpackageフェーズの中で作成したJarファイルをそのまま、ローカルリポジトリにインストールしたいことがあります。
調べてみると、jarをインストールするためのpluginがありました。
Maven Install Plugin
http://maven.apache.org/plugins/maven-install-plugin/
こんな感じで使います。
http://docs.codehaus.org/display/MAVENUSER/Install+Plugin
フェーズ(phase)をうまいこと変えてやれば、コンパイルの実施前や、自身のjarファイルを作成した後にローカルリポジトリにインストールすることができます。
phaseをpackageで指定すると、自身のJarファイルをインストールすることができます。
phaseをinitializeで指定して、公開されていないようなローカルの依存jarをcompile前にインストールすることができるわけです。(コンパイル前に依存ファイルをインストールする場合は、依存関係をsystemで指定するとか、親のpomファイルを作ってそちらでインストールするとかの工夫が必要になります。)
調べてみると、jarをインストールするためのpluginがありました。
Maven Install Plugin
http://maven.apache.org/plugins/maven-install-plugin/
こんな感じで使います。
http://docs.codehaus.org/display/MAVENUSER/Install+Plugin
フェーズ(phase)をうまいこと変えてやれば、コンパイルの実施前や、自身のjarファイルを作成した後にローカルリポジトリにインストールすることができます。
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>install-library</id>
<phase>package</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${path_to_file}</file>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<packaging>jar</packaging>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
phaseをpackageで指定すると、自身のJarファイルをインストールすることができます。
phaseをinitializeで指定して、公開されていないようなローカルの依存jarをcompile前にインストールすることができるわけです。(コンパイル前に依存ファイルをインストールする場合は、依存関係をsystemで指定するとか、親のpomファイルを作ってそちらでインストールするとかの工夫が必要になります。)
StackTraceから情報を取得する時間@Java [Java]
前回は、log4jのログ出力にファイル名や行番号を出力する場合にどれだけ遅いのかを計測してみたのですが、今回はStackTraceから情報を取得するのはどれだけの時間がかかるのかを計測していました。
計測環境は前と同じ。
StackTraceから行番号を取得してみました。
結果は、10回実行してみて、その平均をとってみました。
これも、遅いといえば遅いように思いますが、絶対時間として遅いかといえばそうでもないような。
やっぱり、遅いとみるか早いとみるかは実装するアプリケーションによりますね。
以上、参考まで。
計測環境は前と同じ。
CPU:Intel(R) Core(TM) i7-2600K CPU @ 3.40GHZ
MEMORY:12.0GB
OS:Windows8 Pro(64ビット)
HDD:SSD(Crucial Real SSD C300)
StackTraceから行番号を取得してみました。
public class StackTraceTest { public static void main(String[] args) { int num = 0; long t1 = 0L; long t2 = 0L; t1 = System.nanoTime(); num = Thread.currentThread().getStackTrace()[0].getLineNumber(); t2 = System.nanoTime(); System.out.println(num + ":" + (t2-t1) + " [nsec]"); } }
結果は、10回実行してみて、その平均をとってみました。
11:101165 [nsec]
11:150998 [nsec]
11:102065 [nsec]
11:92760 [nsec]
11:93360 [nsec]
11:86155 [nsec]
11:90058 [nsec]
11:123680 [nsec]
11:105068 [nsec]
11:88857 [nsec]
※平均103μsec
これも、遅いといえば遅いように思いますが、絶対時間として遅いかといえばそうでもないような。
やっぱり、遅いとみるか早いとみるかは実装するアプリケーションによりますね。
以上、参考まで。