Nov 30, 2009
[Maven] Maven2 で依存するライブラリも jar に格納する方法
通常 Java のアプリケーションは複数の jar で構成されることが多い。 log4j、Jakarta Commons、・・・といったライブラリを普通に使うと数十の jar になってしまうこともしばしば。 Java Web Start を使わずに、jar を Web サーバ上に設置してダウンロード→ダブルクリックで実行、としたい場合など複数の jar に分かれていると困ることもある。 Maven2 では maven-shade-plugin を利用することで依存するライブラリも含んだ jar を作成することができる。
- Maven Shade Plugin
- http://maven.apache.org/plugins/maven-shade-plugin/index.html
maven-shade-plugin の使い方
pom.xml に下記を追記する。 <finalName> には生成する jar のファイル名を、<mainClass> には実行可能なクラスを指定する。
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>myapp</finalName>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>jp.in_vitro.myapp.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
package goal を指定して Maven2 を起動すると、指定したファイル名で dependencies を全て含んだ jar が生成される。
$ mvn clean package
Nov 29, 2009
[Apple] Mac OS X でスクリーンセーバを起動するアプリケーションを作成する方法
Mac OS X では スクリーンセーバの起動に画面コーナーへの機能割り当てを利用するのが一般的の様だが、出来れば QuickSilver から一発でスクリーンセーバを起動してシステムをロックしたい。 そこでスクリーンセーバを起動するだけのアプリケーションを作成してみた。
スクリーンセーバ起動用アプリケーションの作成方法
アプリケーションは Mac OS X 付属の Automator で簡単に作成できる。
まず Automator を起動して、テンプレートに「アプリケーション」を選択する。
![[Automator の起動]](/blog/entries/Apple/20091129_01/lock_01.png)
アクションに「シェルスクリプトを実行」を選択し、以下のスクリプトを指定する。
open '/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app'
![[スクリプトの指定]](/blog/entries/Apple/20091129_01/lock_02.png)
Lock.app という名前で /Applications に保存する。
![[保存]](/blog/entries/Apple/20091129_01/lock_03.png)
QuickSilver から起動できる様になった!!
![[QuickSilver から起動]](/blog/entries/Apple/20091129_01/lock_04.png)
余談
上記の様な面倒をしなくても下記のコマンドでいけるかと思ったのだが、QuickSilver はシンボリックリンクの .app を起動してくれなかったので断念。 シンボリックリンクに対応したランチャーを使用する場合や直接 .app を起動する場合は下記で十分。
$ln -s /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app /Applications/Lock.app



