Mavenでのデバッグ方法が検索しても見当たらなかったので
書き留めておきます。
Eclipseを利用している、m2eclipseをインストールしている前提です。
1.プロジェクトを右クリック>Debug As>Maven build...
2.Goalsに goal -Dmaven.surefire.debug test を設定
例) java ファイルを実行する場合
exec:java -Dmaven.surefire.debug test [-Dexec.mainClass="クラス名"] [-Dexec.args="引数"]
例) jettyを実行する場合
jetty:run -Dmaven.surefire.debug test
3.ParameterにName:forkCount Value:0を追加
これがないと、デバッグ用のポートをリスニングするのを回避
Maven v2.0.8 以降はmaven.surefire.debugを利用すれば
ポートを指定したリモートデバッグの必要はありません。
(実はずっとリモートデバッグしていた…)
2013年9月16日月曜日
小ネタ mavenを使ってjava -cp を実行しよう
java -cp たまに使うけどライブラリを探したりするの面倒
ライブラリとか全部mavenに任せようぜという人向け
下のようなコマンドを実行しろとかたまにある
pom.xml :
ライブラリとか全部mavenに任せようぜという人向け
下のようなコマンドを実行しろとかたまにある
java -cp lib/jetty-util-xxx.jar org.eclipse.jetty.util.security.Password password
こういうのはpom.xmlで下みたいに指定して
つぎのコマンドを実行すればOK
mvn exec:java -Dexec.mainClass="org.eclipse.jetty.util.security.Password" -Dexec.args="password" --quiet
pom.xml :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.gauuud.passgen</groupId> <artifactId>passgen</artifactId> <version>0.0.1</version> <dependencies> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> <version>8.1.12.v20130726</version> </dependency> </dependencies> </project>
または、mainClassをpomで指定する
mvn exec:java -Dexec.args="password" --quiet
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.gauuud.passgen</groupId> <artifactId>passgen</artifactId> <version>0.0.1</version> <dependencies> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> <version>8.1.12.v20130726</version> </dependency> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.eclipse.jetty.util.security.Password</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
または、mainClassを指定してjar化する
mvn packageしてtarget以下のjar-with-dependenciesを実行する
java -jar passgen-0.0.1-jar-with-dependencies.jar password
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gauuud.passgen</groupId>
<artifactId>passgen</artifactId>
<version>0.0.1</version>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>8.1.12.v20130726</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>org.eclipse.jetty.util.security.Password</mainClass>
<packageName>passgen</packageName>
<addClasspath>true</addClasspath>
<addExtensions>true</addExtensions>
<classpathPrefix>dependency</classpathPrefix>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>org.eclipse.jetty.util.security.Password</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- append to the packaging phase. -->
<goals>
<goal>single</goal> <!-- goals == mojos -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
あまり効率的とは言えない?
プライベートリポジトリに登録して使い回せばいいじゃないか
nexusよいですよ
2013年1月3日木曜日
jetty maven gzipフィルター適用
maven上のjetty plugin でgzip を適用する方法。
このあたりの内容です。
http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin#Using_GZip_Compression_and_Other_Jetty_Extensions
pom.xmlのプラグイン設定にdependancyを追加
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId> <version>8.1.8.v20121106</version>
<configuration>
[...]
</configuration>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
<version>8.1.8.v20121106</version>
</dependency>
</dependencies>
web.xmlにgzipフィルターを定義
<filter>
<filter-name>GzipFilter</filter-name>
<filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class>
<init-param>
<param-name>mimeTypes</param-name>
<param-value>text/html,text/plain,text/xml,application/xhtml+xml,text/css,application/javascript,image/svg+xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>GzipFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
pom.xmlにdependancyを追加していないと
ClassNotFoundExceptionで怒られます
このあたりの内容です。
http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin#Using_GZip_Compression_and_Other_Jetty_Extensions
pom.xmlのプラグイン設定にdependancyを追加
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId> <version>8.1.8.v20121106</version>
<configuration>
[...]
</configuration>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
<version>8.1.8.v20121106</version>
</dependency>
</dependencies>
web.xmlにgzipフィルターを定義
<filter>
<filter-name>GzipFilter</filter-name>
<filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class>
<init-param>
<param-name>mimeTypes</param-name>
<param-value>text/html,text/plain,text/xml,application/xhtml+xml,text/css,application/javascript,image/svg+xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>GzipFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
pom.xmlにdependancyを追加していないと
ClassNotFoundExceptionで怒られます
2011年12月8日木曜日
MavenのJDKバージョン設定
激しく構成が乱れてるけど、とりあえず公開しておきます。
そのうち直します。
Mavenでコンパイルエラーが発生しました。
注釈は -source 1.3 でサポートされていません
(注釈を使用可能にするには、-source 5 以降を使用してください)
@Override
MavenのデフォルトでJDK1.3を使用しているために発生しているようです。
JDK1.3だと注釈、型指定のリスト、Foreach等が使えず割と不便。
JDKを変更するためにはpom.xmlのpluginに次の項を追加します。
そのうち直します。
Mavenでコンパイルエラーが発生しました。
注釈は -source 1.3 でサポートされていません
(注釈を使用可能にするには、-source 5 以降を使用してください)
@Override
MavenのデフォルトでJDK1.3を使用しているために発生しているようです。
JDK1.3だと注釈、型指定のリスト、Foreach等が使えず割と不便。
JDKを変更するためにはpom.xmlのpluginに次の項を追加します。
<build>
<properties> <java.version>1.6</java.version> </properties>
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin>
参考 https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
2011年10月27日木曜日
maven: jetty plugin ssl オレオレ証明書 の設定
jetty plugin 8.x での設定
1.keystore の作成
JDKのkeytoolでkeystoreを作成する。
作成されたkeystoreを任意の場所へ
2.pom.xmlの編集
下記のようにpom.xmlにJetty pluginの設定を編集。
jetty-maven-pluginの"<connectors>"にSslSocketConnectorを追加する。
3.パスワードの暗号化
pom.xmlにパスワードを平文で保存するのは良くないので、
暗号化する。
を実行すると、(pass)->jetty6の場合
というような値が取得できるので、OBFまたはMD5をpom.xmlに入力する。
ついでに、iPhone等の開発でオレオレ証明書を利用する場合は、
NSURLRequestなら次のようなimplementの追加
ASIHttpRequestならvalidatesSecureCertificate = NOでOK
1.keystore の作成
JDKのkeytoolでkeystoreを作成する。
keytool -keystore keystore -alias jetty -genkey -keyalg RSA -storepass (pass) -keypass (pass) -dname "CN=(domain)"
作成されたkeystoreを任意の場所へ
2.pom.xmlの編集
下記のようにpom.xmlにJetty pluginの設定を編集。
jetty-maven-pluginの"<connectors>"にSslSocketConnectorを追加する。
<connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
<port>8443</port>
<maxIdleTime>60000</maxIdleTime>
<keystore>(任意のkeystoreへのパス)</keystore>
<password>(pass)</password>
<keyPassword>(pass)</keyPassword>
</connector>
3.パスワードの暗号化
pom.xmlにパスワードを平文で保存するのは良くないので、
暗号化する。
java -cp jetty-http-8.x.jar:jetty-util-8.x.jar org.eclipse.jetty.http.security.Password (pass)
を実行すると、(pass)->jetty6の場合
jetty6 OBF:1ktv1x0r1z0f1z0f1x1v1kqz MD5:e032a01e5c4dbb03a29fb031f6b37658
というような値が取得できるので、OBFまたはMD5をpom.xmlに入力する。
ついでに、iPhone等の開発でオレオレ証明書を利用する場合は、
NSURLRequestなら次のようなimplementの追加
@implementation NSURLRequest(NSHTTPURLRequest)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES; // Or whatever logic
}
@endASIHttpRequestならvalidatesSecureCertificate = NOでOK
2011年9月8日木曜日
maven on eclipse : m2e
mavenをeclipseで使用する方法。(9/8現在)
基本的には下記リンクを参照する。
基本的には下記リンクを参照する。
http://d.hatena.ne.jp/Kishi/20090228/1235813480
で、私がやってみてつまずいたところを上げてみる。
2. m2eclipseのインストール のリンクが切れてるので下記リンクに変更する。
http://download.eclipse.org/technology/m2e/releases
6. jettyをサーバとして起動
「ゴール」の「選択」 画面に遷移しても「ゴール」の候補が出てきません。
Mavenレポジトリを読み込んでいないさいのバグのようです。(参照)
Mavenレポジトリビュー(Window->Show View->Other->Mavenカラ追加)から
右クリックで、「Full Index Enabled」を選択し「Rebuild Index」を実行します。
10分ぐらいかかる。
下のタスクトレイに表示される進捗はずっと0%ですが実際は進捗してます。(バグ?)
Rebuild後は「ゴール 」の選択候補が表示されるようになります。
登録:
投稿 (Atom)