各開発者がライブラリの場所を意識することなく開発環境を構築することができます。デメリットは、サーバーを一台建てないとならないので、少人数の開発の場合「なにもそこまで」となってしまいます。 2)ローカルリポジトリに格納する 以下のような内容を持つバッチファイルを作成し、バッチファイルと同一のディレクトリに格納したいライブラリのjarを配置します。 配置後、バッチファイルを実行することで、ローカルリポジトリにライブラリが格納されます。<repositories> <repository> <id>xxx-inhouse-repository-group</id> <name>Xxx Inhouse Maven Repository Group</name> <url>http://192.168.10.20/maven/</url> </repository>
<repositories>
set MAVEN_PATH="C:\\Program Files\\NetBeans 7.2\\java\\maven\\bin\\mvn.bat"
call %MAVEN_PATH% install:install-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=1.0.0 -Dpackaging=jar
1行目でMavenがインストールされているパスを指定していますが、Mavenインストール後に環境変数を設定しているのであれば不要です。
ローカルリポジトリへのライブラリの格納は1度だけ行えばよいので、少人数の開発の場合、このようなやり方でいいかもしれません。配置するライブラリや、バッチファイルは、Mavenプロジェクトの中に含めておかないと、後からプロジェクトに参画した開発者が戸惑うかもしれません。
3)scope=systemを使う
ややトリッキーな方法です。
pom.xmlに、以下のように記述し、systemPathに記述した位置に依存ライブラリを配置します。
scopeはsystem固定なので、依存ライブラリを実行モジュールに含めた形でwarファイルを作りたい場合、下記のようにしておく必要があります。<dependency>
<groupid>com.oracle</groupid>
<artifactid>ojdbc6</artifactid>
<version>1.0.0</version>
<scope>system</scope>
<systempath>${basedir}/src/main/webapp/WEB-INF/lib/ojdbc6.jar</systempath>
</dependency>
各開発者が何もする必要がないので手軽ですが、はじめにも述べたようにトリッキーな方法です。NetBeansだと、警告がでたりします。<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-dependency-plugin</artifactid>
<executions>
<execution>
<id>copy</id>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputdirectory>
${project.build.directory}/lib
</outputdirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-shade-plugin</artifactid>
<version>2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalname>${project.artifactId}</finalname>
<source>1.7
<target>1.7</target>
</configuration>
</execution>
</executions>
</plugin>
各依存ライブラリ中のクラスファイルが、ビルドされたモジュール(jar)の中に格納されます。ビルドモジュールのサイズが大きくなると、実行環境への配置に手間がかかったりするのですが、ちょっとしたアプリケーションであれば、1つのjarにまとめてしまうのも手かもしれません。using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
namespace ImageOperator
{
///
/// ビットマップ操作クラス
/// ビットマップのピクセル操作を高速化します。
/// 本クラスでは、メモリへの直接アクセスを行うことで高速化します。
///
public class UnsafeBitmapOperator
{
///
/// ビットマップデータ
///
protected Bitmap bmp = null;
///
/// ビットマップデータ
///
protected BitmapData bmpData = null;
///
/// コンストラクタ
///
/// 対象イメージ
public UnsafeBitmapOperator(Bitmap original)
{
// オリジナルのBitmapオブジェクトを保存
this.bmp = original;
}
///
/// 高速化開始
///
public void BeginAccess()
{
this.bmpData = this.bmp.LockBits(new Rectangle(0, 0, this.bmp.Width, this.bmp.Height),
System.Drawing.Imaging.ImageLockMode.ReadWrite,
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
}
///
/// 高速化終了
///
public void EndAccess()
{
if (this.bmpData != null)
{
this.bmp.UnlockBits(this.bmpData);
this.bmpData = null;
}
}
///
/// ピクセル取得
///
/// X座標
/// Y座標
/// ピクセル
public Color GetPixel(int x, int y)
{
if (this.bmpData == null)
{
// 高速化していない場合、通常のピクセル取得
return this.bmp.GetPixel(x, y);
}
unsafe
{
// イメージの先頭ポインタ取得
byte* pBmp = (byte*)this.bmpData.Scan0;
int pos = x * 3 + this.bmpData.Stride * y;
byte b = pBmp[pos + 0];
byte g = pBmp[pos + 1];
byte r = pBmp[pos + 2];
return Color.FromArgb(r, g, b);
}
}
///
/// ピクセル設定
///
/// X座標
/// Y座標
/// ピクセル色
public void SetPixel(int x, int y, Color col)
{
if (this.bmpData == null)
{
// 高速化していない場合、通常のピクセル設定
this.bmp.SetPixel(x, y, col);
return;
}
unsafe
{
// イメージの先頭ポインタ取得
byte* pBmp = (byte*)this.bmpData.Scan0;
int pos = x * 3 + this.bmpData.Stride * y;
pBmp[pos + 0] = col.B;
pBmp[pos + 1] = col.G;
pBmp[pos + 2] = col.R;
}
}
}
}
use_localtime=YES
変更した後は、service vsftpd reload
で設定を再読み込みさせるのをお忘れなく。
その後、FTPクライアントでファイル一覧を表示して、ファイルの作成/更新日時がローカルタイムになっているのを確認してみてください。